我需要能够使用来自不受控制的服务器的iso10126填充来解密一大堆AES256加密数据。 CCCrypt似乎只支持“kCCOptionECBMode”和“kCCOptionPKCS7Padding”作为选项,因此CommonCrypto库似乎无法满足我的需求。什么是最好的解决方案?
我还希望能够使用iso7816和iso10126填充,但它们不是优先考虑的问题。我知道这些填充选项被认为“可能不安全”,但由于我无法控制数据源,我希望能够使用这些设置进行解密。
我很确定这些AES加密的数据片段是由CryptoJS javascript库加密的(它具有上面提到的所有填充选项)。我知道我可以通过UIWebView使用这个库并将结果返回到Objective-C中,但我想要比javascript库提供的速度更快。
谢谢!
答案 0 :(得分:3)
填充是您可以自己编程的其中一项(与许多其他加密算法不同)。只需解密而不进行任何填充,并自己进行取消填充以获取纯文本。如果你加密,显然先填充,然后加密。几乎所有的库都支持“NoPadding”之类的东西。您可以通过查看Wikipedia page来查找所有填充模式的工作方式。
请注意,您始终可以为给定模式填充/取消填充。所以你可能需要添加一个完整的填充字节块。
请注意,ISO 7816填充并不存在。它是ISO / IEC 9797-1填充方法2,用于字节而不是任意数量的位。在ISO / IEC 7816-4中使用(未定义)用于安全消息传递(信息性)这一事实并未使其成为该标准的一部分。
没有填充的其他问题/答案: iOS encryption AES128/CBC/nopadding why is not working? 此链接应显示如何使用iOS API执行无填充加密/解密。