我正在使用Java中的RSA加密。我试图在配备Cyanogenmod的Android 2.2的HTC Saphire(32B)开发人员手机上加密数据,然后在运行Mandriva Linux 2010的64位服务器上解密所述数据。我在两台计算机上使用相同的公钥,私钥对,可以正确加密/解密Android手机上的数据,可以正确地加密/解密Linux服务器上的数据,但我无法加密手机上的数据,然后在服务器上解密。我得到了不好的填充异常。我已确认数据正在通过电话正确发送,并且正在被服务器正确解析。因此,我无法弄清楚为什么解密失败。谁能帮我这个?也许Java中的RSA算法有一些关于字大小的潜在假设?
更多信息:
- 我的加密/解密库是基于向导创建here.
- 我的加密密钥长度为2048位,但我看到不同的密钥大小类似的行为。
- 我已将RSA加密/解密代码打包到jar文件中。它是通过Eclipse在服务器的机器上编译的。
- 使用Android手机上的加密库的程序使用上述库。它也是使用Eclipse构建的。
- 服务器程序是使用Netbeans构建的(因为当时比较容易)。
其他问题
- 是否还有其他免费的公共密钥加密算法/可用于Java库?他们是否跨平台工作?人们期望他们有什么样的表现?等我看过这个,并没有发现很多;也许我正在寻找与错误的关键字。
唷!我认为就是这样。感谢您的帮助!
任何算法必须跨平台工作,问题出在你的代码(或配置)最有可能 – bestsss 2011-02-07 20:25:31
配置,呃?什么是可配置的RSA?我将如何在Java中执行此操作?你能提供一个指导教程的链接吗?我不想花时间,但是有一位像你这样的专家(或经验丰富的人)可以指引我走向正确的方向,这会让我的生活变得更加轻松。 – 2011-02-07 20:33:32
(sry跑掉了晚餐)我的意思是配置为公钥/私钥,不好的填充主要是由交换密钥错误导致的。如果您确定并由于某种原因,android不支持与sun的impl相同的填充。你可以试试http://www.bouncycastle.org/ btw,你如何在同一台设备/机器上加密/解密数据? – bestsss 2011-02-07 21:26:48