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