《RSA加密算法的java实现》由会员分享,可在线阅读,更多相关《RSA加密算法的java实现(7页珍藏版)》请在金锄头文库上搜索。
1、package com.encryp; import java.security.MessageDigest;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class Coder public static final String KEY_SHA=SHA;public static final String KEY_MD5=MD5;/* * BASE64解密 * param key * return * throws Exception */public static byte decryptBASE64
2、(String key) throws Exceptionreturn (new BASE64Decoder().decodeBuffer(key);/* * BASE64加密 * param key * return * throws Exception */public static String encryptBASE64(byte key)throws Exceptionreturn (new BASE64Encoder().encodeBuffer(key);/* * MD5加密 * param data * return * throws Exception */public st
3、atic byte encryptMD5(byte data)throws ExceptionMessageDigest md5 = MessageDigest.getInstance(KEY_MD5);md5.update(data);return md5.digest();/* * SHA加密 * param data * return * throws Exception */public static byte encryptSHA(byte data)throws ExceptionMessageDigest sha = MessageDigest.getInstance(KEY_S
4、HA);sha.update(data);return sha.digest();package com.encryp;import java.security.Key;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Signature;import java.security.i
5、nterfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.HashMap;import java.util.Map;import javax.crypto.Cipher;public class RsaUtil extends Coder public static final String KEY_A
6、LGORTHM = RSA; public static final String SIGNATURE_ALGORITHM = MD5withRSA; public static final String PUBLIC_KEY = RSAPublicKey;/ 公钥 public static final String PRIVATE_KEY = RSAPrivateKey;/ 私钥 /* * 初始化密钥 * * return * throws Exception */ public static Map initKey() throws Exception KeyPairGenerator
7、keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORTHM); keyPairGenerator.initialize(1024); KeyPair keyPair = keyPairGenerator.generateKeyPair(); / 公钥 RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); / 私钥 RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); Map keyMap =
8、 new HashMap(2); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; /* * 取得公钥,并转化为String类型 * * param keyMap * return * throws Exception */ public static String getPublicKey(Map keyMap) throws Exception Key key = (Key) keyMap.get(PUBLIC_KEY); return encryptBASE64(k
9、ey.getEncoded(); /* * 取得私钥,并转化为String类型 * * param keyMap * return * throws Exception */ public static String getPrivateKey(Map keyMap) throws Exception Key key = (Key) keyMap.get(PRIVATE_KEY); return encryptBASE64(key.getEncoded(); /* * 用私钥加密 * * param data * 加密数据 * param key * 密钥 * return * throws
10、Exception */ public static byte encryptByPrivateKey(byte data, String key) throws Exception / 解密密钥 byte keyBytes = decryptBASE64(key); / 取私钥 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM); Key privateKey = key
11、Factory.generatePrivate(pkcs8EncodedKeySpec); / 对数据加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); /* * 用私钥解密 * * param data * 加密数据 * param key * 密钥 * return * throws Exception */ public static byte decryptBy
12、PrivateKey(byte data, String key) throws Exception / 对私钥解密 byte keyBytes = decryptBASE64(key); PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM); Key privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); / 对数据解密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(data); /* * 用公钥加密 * * param data * 加密数据 * param key * 密钥 * return * throws Exception