Rsa 加密解密 java
来源:互联网 发布:license 开发 node 编辑:程序博客网 时间:2024/06/10 01:17
前言
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的 [ 百度百科 ]
开始
1 .Java中RSA加密解密和.Net 、Php 有点不同,公钥私钥必须使用PKCS8格式,而.Net、Php却不需要。
2 .加密代码如下,注意其中publicCertificate 是PKCS8格式:
@Override public String rsaEncode(String publicCertificate, String text) { try { byte[] publicBytes =baseStrToByte(publicCertificate); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicBytes); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); PublicKey pubKey = keyFactory.generatePublic(keySpec); try { // get an RSA cipher object and print the provider final Cipher cipher = Cipher.getInstance(ALGORITHM); // encrypt the plain text using the public key cipher.init(Cipher.ENCRYPT_MODE, pubKey); byte[] cipherBytes = cipher.doFinal(text.getBytes(CharSet)); String encodestr = baseByteToStr(cipherBytes); return encodestr; } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return null; }
3 .解密代码,注意其中privateCertificate是PKCS8格式
@Override public String rsaDecode(String privateCertificate, String text) { try { byte[] privateBytes = baseStrToByte(privateCertificate); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateBytes); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); PrivateKey priKey = keyFactory.generatePrivate(keySpec); byte[] cipherText = null; try { // get an RSA cipher object and print the provider final Cipher cipher = Cipher.getInstance(ALGORITHM); // encrypt the plain text using the public key cipher.init(Cipher.DECRYPT_MODE, priKey); byte[] textbyte = baseStrToByte(text); cipherText = cipher.doFinal(textbyte); String decodestr = new String(cipherText, CharSet); return decodestr; } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return null; }
4 .辅助方法
/** * @Description (TODO) * @param str * @return */ private byte[] baseStrToByte(String str) { return Base64.getDecoder().decode(str); } /** * @Description (TODO) * @param bytes * @return */ private String baseByteToStr(byte[] bytes) { return Base64.getEncoder().encodeToString(bytes); }
结束
附上单元测试图片一张:
阅读全文
0 0
- java RSA加密解密
- Java RSA加密解密
- Java RSA加密解密
- java RSA 加密/解密
- java RSA加密解密
- java rsa加密解密
- java RSA加密解密
- java RSA加密解密
- java RSA 加密解密
- java加密解密--RSA
- Java RSA加密解密
- Java RSA加密解密
- Rsa 加密解密 java
- java RSA加密解密实现
- java中文RSA加密解密
- java RSA加密解密实现
- java RSA加密解密
- java RSA加密解密实现
- Neural Networks
- 生产者消费者(singlAll和await误用)
- HDU6038——Function(图论,tarjan)
- mysql 导入导出数据
- 7.25 链表,队列,二叉树,查找,排序
- Rsa 加密解密 java
- [3D图形学]视锥剔除入门(翻译)
- 2017.7.25考试(膜你赛from耿)
- css3属性
- ssm+bootstrap验证练习01注册验证(方法一)之代码实现
- 最近转ARCGIS 三维二次开发了,开启新的分享与交流
- linxu之Vim快速入门
- JS 60秒后重发送验证码
- React Native 第三天