【问题标题】:RSA/ECB/PKCS1Padding Decryption on iPhoneiPhone上的RSA/ECB/PKCS1Padding解密
【发布时间】:2013-03-12 05:27:43
【问题描述】:

我已经搜索了很多关于我的任务,例如,

我通过 XML 获取数据,该 XML 使用后端的 RSA/ECB/PKCS1Padding 加密,他们给了我一个文件名 "publickey.der"。根据他们的说法,这是公钥,您需要使用此密钥进行解密。

说真的,我不知道在 Objective C 上使用这个公钥解密。

请指导我需要使用哪个框架或库或 sdk,或者任何人有任何示例代码。我只指望你们。

期待您的回复

再次感谢您

【问题讨论】:

  • 我不确定你所说的 RSA/ECB/PKCS1Padding 是什么意思。 ECB 是分组密码(例如 AES)而不是公钥方案(例如 RSA)的一种操作模式。无论如何,CommonCrypto Library 可能值得一看
  • @NathanBaggs "ECB" 在用于 RSA 的 Java 中经常用作 "None" 的同义词。基本上,您可以通过将明文拆分为比密钥大小小 11 个字节的块来在 ECB 模式下加密,然后加密每个块。这与在 ECB 模式下执行 AES 的方式相同。当然它非常慢,你有很多开销,但它可以完成。在这种情况下,虽然我假设 "RSA/ECB/PKCS1Padding" 只是用作 Java 中 XML 加密 API 的输入。
  • 您能否指出加密数据使用什么容器格式?是否使用了 XML 加密?如果您不知道,请发布一些加密的测试数据。

标签: iphone ios objective-c cryptography rsa


【解决方案1】:

Public keys are used for encryption, private keys are used for decryption。你必须先纠正这个问题。

另外 RSA/ECB/PKCS1Padding 也不常见,当你想对大量数据进行 rsa 加密时,通常你用 rsa 加密 aes 密钥,然后用 aes 加密你的数据。

基本上,要在 java 之外进行此 RSA/ECB 解密,它将是手动的,并且您将不得不按块大小(密钥大小)分解密文,然后在没有填充的情况下解密每个块,直到最后一个带有填充的块,这就是你获得欧洲央行的方式。

这并不理想,再加上他们为您提供公钥并告诉您解密,这表明向您提供数据的人需要修复他们的加密问题。

【讨论】: