1. 程式人生 > >java 非對稱加密RSA

java 非對稱加密RSA

init nco security stat deb 編碼 IT hal mex

package com.aarony.test;

import java.io.IOException;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class EncryptionRSADemo2 { /** * * 此方法描述的是:解密密匙 * * @author: Aarony * @version: 2018年6月20日 下午9:44:38 */ public
static byte[] privateEncrypt(byte[] bytes, PrivateKey privateKey) throws Exception { Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(bytes); } /** * * 此方法描述的是:加密 * * @author
: Aarony * @version: 2018年6月20日 下午9:44:47 */ public static byte[] publicEncrypt(byte[] bytes, PublicKey publicKey) throws Exception { Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); return cipher.doFinal(bytes); } /** * * 此方法描述的是:解密base64 位的密鑰 * * @author: Aarony * @version: 2018年6月20日 下午9:40:51 */ public static PrivateKey string2PrivateKey(String privateStr) throws Exception { byte[] bytes = base642byte(privateStr); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(bytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); return keyFactory.generatePrivate(keySpec); } /** * * 此方法描述的是:解密base64 位的公鑰 * * @author: Aarony * @version: 2018年6月20日 下午9:40:51 */ public static PublicKey string2PublicKey(String pubStr) throws Exception { byte[] bytes = base642byte(pubStr); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(bytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); return keyFactory.generatePublic(keySpec); } /** * * 此方法描述的是:生成keypair * * @author: Aarony * @version: 2018年6月20日 下午9:35:43 * @throws NoSuchAlgorithmException */ public static KeyPair getKeyPair() throws NoSuchAlgorithmException { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); return keyPairGenerator.generateKeyPair(); } /** * * 此方法描述的是:獲取公鑰 * * @author: Aarony * @version: 2018年6月20日 下午9:37:13 */ public static String getPublicKey(KeyPair keyPair) { PublicKey key = keyPair.getPublic(); return byte2base64(key.getEncoded()); } /** * * 此方法描述的是:獲取公鑰 * * @author: Aarony * @version: 2018年6月20日 下午9:37:13 */ public static String getPrivateKey(KeyPair keyPair) { PrivateKey key = keyPair.getPrivate(); return byte2base64(key.getEncoded()); } /** * * 此方法描述的是:base64 解碼 * * @author: Aarony * @version: 2018年6月20日 下午9:16:57 */ public static byte[] base642byte(String base64) throws IOException { BASE64Decoder decoder = new BASE64Decoder(); return decoder.decodeBuffer(base64); } /** * * 此方法描述的是: base 64編碼 * * @author: Aarony * @version: 2018年6月20日 下午9:15:14 */ public static String byte2base64(byte[] bytes) { BASE64Encoder base = new BASE64Encoder(); return base.encode(bytes); } }

java 非對稱加密RSA