情况说明
我在Java中使用RSA加密。我试图在配备Cyanogenmod的Android 2.2的HTC Saphire(32B)开发者手机上加密数据,然后在运行Mandriva Linux 2010的64位服务器上解密该数据。我在两台机器上使用相同的公钥、私钥对,可以正确地在Android手机上加密/解密数据,可以正确地在Linux服务器上加密/解密数据,但我无法在手机上加密数据并在服务器上解密它。我收到了错误的填充异常。我已经确认数据通过手机正确发送,并且通过服务器正确解析。因此,我无法弄清为什么解密失败。有谁能帮助我吗?也许Java中的RSA算法对字长有一些基本假设?
更多信息:
- 我的加密/解密库基于这里找到的指南。
- 我的加密密钥长度为2048位,但我看到不同的密钥大小表现类似。
- 我将我的RSA加密/解密代码打包到了一个jar文件中。它是通过服务器的Eclipse编译的。
- 在Android手机上使用加密库的程序使用上述库。它也是使用Eclipse构建的。
- 服务器程序是使用Netbeans构建的(当时更容易这样做)。
其他问题
- Java中是否有其他免费的公钥加密算法/库?它们是否可跨平台工作?人们对它们期望什么性能?等等。我已经调查过了,没有发现太多;也许我用的关键字不对。
哇!我想那就是全部内容了。提前感谢您的帮助!