RSA加密算法的java实现

上传人:20****03 文档编号:152441341 上传时间:2020-11-23 格式:DOCX 页数:7 大小:10.73KB
返回 下载 相关 举报
RSA加密算法的java实现_第1页
第1页 / 共7页
RSA加密算法的java实现_第2页
第2页 / 共7页
RSA加密算法的java实现_第3页
第3页 / 共7页
RSA加密算法的java实现_第4页
第4页 / 共7页
RSA加密算法的java实现_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号