android RSA公钥加密 公钥解密,解决乱码问题
来源:互联网 发布:金融分销系统源码 编辑:程序博客网 时间:2024/05/16 01:05
/** * <p> * 公钥解密 * </p> * * @param encryptedData 已加密数据 * @param publicKey 公钥 (无需base64编码,靠,网上的代码为毛说要base64编码,坑啊哥哥们) * @return (已解决解密乱码问题) * @throws Exception */public static byte[] decryptByPublicKey(byte[] encryptedData,String publicKey ) throws Exception { X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); Key publicK = keyFactory.generatePublic(x509KeySpec); Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, publicK); int inputLen = encryptedData.length; ByteArrayOutputStream out = new ByteArrayOutputStream(); int offSet = 0; byte[] cache; int i = 0; // 对数据分段解密 while (inputLen - offSet > 0) { if (inputLen - offSet > MAX_DECRYPT_BLOCK) { cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK); } else { cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet); } out.write(cache, 0, cache.length); i++; offSet = i * MAX_DECRYPT_BLOCK; } byte[] decryptedData = out.toByteArray(); out.close(); return decryptedData;}
/** * <p> * 公钥加密 * </p> * * @param data 源数据 * @param * @return * @throws Exception */public static byte[] encryptByPublicKey(byte[] data,String publicKey) throws Exception { byte[] keyBytes = Base64.decode(publicKey, Base64.DEFAULT); X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); Key publicK = keyFactory.generatePublic(x509KeySpec); // 对数据加密 Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding"); cipher.init(Cipher.ENCRYPT_MODE, publicK); int inputLen = data.length; ByteArrayOutputStream out = new ByteArrayOutputStream(); int offSet = 0; byte[] cache; int i = 0; // 对数据分段加密 while (inputLen - offSet > 0) { if (inputLen - offSet > MAX_ENCRYPT_BLOCK) { cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK); } else { cache = cipher.doFinal(data, offSet, inputLen - offSet); } out.write(cache, 0, cache.length); i++; offSet = i * MAX_ENCRYPT_BLOCK; } byte[] encryptedData = out.toByteArray(); out.close(); return encryptedData;}
注:本方法中base64为util包下android.util.Base64;
另外:方法中公钥 为"ASDFG"这种 ,网上有好多公钥前后有---BIGIN END—— 这种,在本文中并不适用。
本人菜鸟,不知道问什么,求告知
0 0
- android RSA公钥加密 公钥解密,解决乱码问题
- Android RSA 公钥加密、解密
- 关于Android 使用服务器公钥RSA加密 数据到服务器RSA解密报错问题
- 通过Base64加密解密解决RSA中文解密乱码问题
- 公钥加密-私钥解密(RSA)
- 解决Android客户端RSA解密部分乱码的问题
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- Android RSA公钥加密
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
- RSA公钥解密
- C#使用RSA进行私钥加密公钥解密
- 苹果api rsa公钥加密私钥解密
- Python 进行RSA私钥加密,公钥解密
- iOS RSA公钥加密、私钥解密
- Android绘图机制与处理技巧(四)——Android图像处理之画笔特效处理
- PAT 1014 Waiting in Line (模拟)
- mysql utf8mb4编码设置
- spark UI 显示已完成应用的历史信息
- session.flush()与session.clear()的区别及使用环境
- android RSA公钥加密 公钥解密,解决乱码问题
- (面试)操作系统相关(不断丰富中…)
- Session超时或无效,处理ajax请求
- 《道德经》全文和译文(经典版本)
- ThinkPHP(3)——URL模式
- 匈牙利算法
- myeclipse编辑器设置
- OpenglES2.0 for Android:第一个OpenglES应用
- Spring中bean注入初始化方式—通过注解@Configuration @bean