java加密解密初探-RSA
来源:互联网 发布:mafia3 mac 编辑:程序博客网 时间:2024/05/15 11:17
//java提供的公钥私钥生成类 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); SecureRandom secureRandom = new SecureRandom("参与随机秘钥的生成,此处固定则生成的秘钥固定".getBytes("utf-8")); keyPairGenerator.initialize(1024, secureRandom); KeyPair keypair = keyPairGenerator.generateKeyPair(); //此处即是产生的公钥和私钥 PrivateKey privateKey= keypair.getPrivate(); PublicKey publicKey = keypair.getPublic(); //我们往往把公钥私钥转换成字符串来保存或者传递 String privstr = new BASE64Encoder().encode(privateKey.getEncoded()); String pubstr = new BASE64Encoder().encode(publicKey.getEncoded()); System.out.println("私钥:" + privstr ); System.out.println("公钥:" + pubstr ); //接收方 把字符串格式的转换回来 //公钥转换 java中提供了字节数组转公钥的类 X509EncodedKeySpec X509EncodedKeySpec x509 = new X509EncodedKeySpec(new BASE64Decoder().decodeBuffer(pubstr)); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey pubkey = keyFactory.generatePublic(x509); //接收方 把字符串格式的转换回来 //私钥转换 java中提供了字节数组转公钥的类 PKCS8EncodedKeySpec PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(new BASE64Decoder().decodeBuffer(privstr)); PrivateKey priKey = keyFactory.generatePrivate(keySpec); //公钥加密 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, pubkey); byte[] b = cipher.doFinal("要加密的字符串".getBytes("utf-8")); //用base64把字节数组转换为字符串 String basestr = new BASE64Encoder().encode(b); System.out.println("加密后在用base64转换成的字符串:" + basestr); //私钥解密 cipher.init(Cipher.DECRYPT_MODE, priKey); //先把字符串转换成原来的字节数组 byte[] bytetext = cipher.doFinal(new BASE64Decoder().decodeBuffer(basestr)); System.out.println("解密后的数据"+ new String(bytetext,"utf-8")); //私钥加密 cipher.init(Cipher.ENCRYPT_MODE, priKey); byte[] pb = cipher.doFinal("私钥加密的字符串".getBytes("utf-8")); //用base64把字节数组转换为字符串 String pbasestr = new BASE64Encoder().encode(pb); System.out.println("私钥加密后在用base64转换成的字符串:" + pbasestr); //公钥解密 cipher.init(Cipher.DECRYPT_MODE, pubkey); //先把字符串转换成原来的字节数组 byte[] pbytetext = cipher.doFinal(new BASE64Decoder().decodeBuffer(pbasestr)); System.out.println("公钥解密后的数据:"+ new String(pbytetext,"utf-8"));
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加密解密
- Java RSA加密解密
- Rsa 加密解密 java
- java RSA加密解密实现
- java中文RSA加密解密
- java RSA加密解密实现
- java RSA加密解密
- CPU占用率
- 动态规划-----换钱
- ARM技术社区_ARM学习资料汇总
- VS2008开发WinCE程序编译速度慢的解决办法
- 偏执却管用的10条Java编程技巧
- java加密解密初探-RSA
- Linux 监控内存占用大小和监控网络流量大小和网络链接数
- 本地配yum(没有网络)
- 面向对象的七大设计原则
- codeforces AIM Tech Round 3 (Div. 2) B. Checkpoints
- 在MAC中配置maven
- 配置pam_mysql 出错
- MySQL死锁问题实例分析及解决方法
- 【例题】【康托展开】NKOJ 2272 数字排列