android RSA和Java RSA加密不一致的坑

最近项目采用RSA进行加密,遇到了坑,记录一下

1、BASE64Decoder在Android中是不存在的,需用Base64替换,
BASE64Decoder base64Decoder= new BASE64Decoder();
byte[] buffer= base64Decoder.decodeBuffer(privateKeyStr);
替换为:
byte[] buffer= Base64.decode(DEFAULT_PUBLIC_KEY, Base64.DEFAULT);

导包

import android.util.Base64;
2、cipher= Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
做加密,但是一直无法与服务器那边对接,而且每次生成的密文是一样的。
后来参考文章:http://my.oschina.net/oschenxiaomo/blog/543199
使用cipher= Cipher.getInstance("RSA/ECB/PKCS1Padding")后就可以了。
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,你想了解如何在 Android 平台上使用 Java 进行 RSA 加密RSA 是一种非对称加密算法,它可以用于数据的加密和数字签名等场景。 首先,你需要生成一对 RSA 密钥,包括公钥和私钥。可以使用 Java 提供的 KeyPairGenerator 类来生成密钥对。示例代码如下: ```java KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048); // 密钥长度为 2048 位 KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); ``` 接下来,你可以使用公钥对数据进行加密,使用私钥对加密后的数据进行解密。示例代码如下: ```java // 加密 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedData = cipher.doFinal(plainText.getBytes("UTF-8")); // 解密 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedData = cipher.doFinal(encryptedData); String decryptedText = new String(decryptedData, "UTF-8"); ``` 这里的 plainText 是要加密的明文数据,可以是任意字符串。加密后得到的 encryptedData 是一个字节数组,可以进行传输或保存。解密时需要使用同一对密钥进行解密,得到的 decryptedText 就是原始的明文数据。 需要注意的是,RSA 加密算法的运算速度较慢,适合加密较小的数据。如果需要加密大量数据,可以考虑使用对称加密算法,如 AES 等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值