Java书写的RAS加密解密
来源:互联网 发布:网络二手车平台骗局 编辑:程序博客网 时间:2024/05/16 08:07
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.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class RSAHelper { public static PublicKey getPublicKey(String key) throws Exception { byte[] keyBytes; keyBytes = (new BASE64Decoder()).decodeBuffer(key); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(keySpec); return publicKey; } public static PrivateKey getPrivateKey(String key) throws Exception { byte[] keyBytes; keyBytes = (new BASE64Decoder()).decodeBuffer(key); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(keySpec); return privateKey; } public static String getKeyString(Key key) throws Exception { byte[] keyBytes = key.getEncoded(); String s = (new BASE64Encoder()).encode(keyBytes); return s; } public static void main(String[] args) throws Exception { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); //密钥位数 keyPairGen.initialize(1024); //密钥对 KeyPair keyPair = keyPairGen.generateKeyPair(); // 公钥 PublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); // 私钥 PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); String publicKeyString = getKeyString(publicKey); System.out.println("public:\n" + publicKeyString); String privateKeyString = getKeyString(privateKey); System.out.println("private:\n" + privateKeyString); //加解密类 Cipher cipher = Cipher.getInstance("RSA");//Cipher.getInstance("RSA/ECB/PKCS1Padding"); //明文 byte[] plainText = "我们都很好!邮件:@sina.com".getBytes(); //加密 cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] enBytes = cipher.doFinal(plainText); //通过密钥字符串得到密钥 publicKey = getPublicKey(publicKeyString); privateKey = getPrivateKey(privateKeyString); //解密 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[]deBytes = cipher.doFinal(enBytes); publicKeyString = getKeyString(publicKey); System.out.println("public:\n" +publicKeyString); privateKeyString = getKeyString(privateKey); System.out.println("private:\n" + privateKeyString); String s = new String(deBytes); System.out.println(s); } }
0 0
- Java书写的RAS加密解密
- RAS 加密解密
- Android中RAS加密解密
- 20160427-Android&Tomcat-RAS加密解密文本
- ras 加密
- RAS加密
- RAS加密
- RAS加密
- Base64、MD5、DES、AES、RAS加密解密编码解码分析
- Java中MD5加密类的书写
- java的MD5加密、解密
- Java的MD5加密解密
- java的加密与解密
- java的MD5加密、解密
- java的MD5加密、解密
- java的MD5加密、解密
- JAVA的RSA加密解密
- java的加密与解密
- 做个好的专业的程序员立篇
- div页面居中方法
- 杭电2021-发工资咯
- ButterKnife 点击事件没反应的解决方案
- linux服务器的网站日志怎么查看
- Java书写的RAS加密解密
- 实用的iOS面试注意点
- MyEclipse 2015 智能提示 CSS3.0和HTML5的标签
- Mysql数据库引擎使用innodb还是Myisam
- java中File文件路径跨平台(File.separator)
- centos7虚拟机安装elasticsearch5.0.x-安装篇
- 基于安卓的google+ 分享
- 自定义gradle插件
- spring boot 学习笔记(005)返回json对象