钛 AES/CBC/PKCS5Padding
Posted
技术标签:
【中文标题】钛 AES/CBC/PKCS5Padding【英文标题】:Titanium AES/CBC/PKCS5Padding 【发布时间】:2015-06-25 09:15:45 【问题描述】:我已经坚持了 2 周。谁能告诉我如何在 ios 的 Appcelerator 工作室中实现 AES/CBC/PKCS5Padding(已经内置在 android 的 Java 库中)?我也尝试了 Ti.SlowAES 和 Crypto JS,但两者都没有 PCKS5 填充。加密的代码与 Java 运行的代码不同。好郁闷。 非常感谢提前。任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:如果问题是 PKCS#5 和 PKCS#7 填充,它们是相同的。
唯一的区别在于规范:PKCS#5 填充与 PKCS#7 填充相同,只是它仅针对使用 64 位(8 字节)块大小的块密码定义,而 PKCS#7 是定义为最多 255 个字节。
【讨论】:
谢谢。您对 Ti.SlowAES 有什么建议吗? 我不使用 Ti.SlowAES 的原因如下: 1. 没有关于它的使用文档,不应该阅读代码来了解如何使用它。 2. 互操作性没有文档。 3. 它使用未记录的密钥扩展。 4.是JS中的一个实现,没有经过认证。 5. 它可能有错误和/或后门。 6. 找到至少满足 1-3 项的图书馆。【参考方案2】:最终,它完成了。所以放心了。 对于有人和我有同样的问题,我想把一些基本的东西说清楚。 首先是 PKCS5 与 PKCS7 相同(只是 PKCS7 的 16 字节的情况)。 第二件事是在 CBC 模式下,默认填充是 PKCS7(它只是将字节添加到加密字节中使其 %16=0),因为 AES 是对称加密。
我的解决方案通过一些修改与 SlowAES 一起使用。您只需了解 AES 加密字节。所以无论你输入输入(字符串),你都必须转换为字节来加密。然后加密的密码必须从字节转换为字符串。所以使用一些转换功能。 SlowAES 加密的字节是正确的。问题只是转换为base64,HexString,...
【讨论】:
CBC模式与PKCS7无关,不相关。您可以在有或没有 PKCS7 的情况下使用 CBC 模式,并且 PKCS7 可以与 ECB 模式一起使用。 PKCS7 添加以添加的字节数为值的字节,如果输入是块大小的倍数,则添加一个额外的块。见Wikipedia PKCS7。 CBC 模式使用 iv(初始化向量),许多实现提供所有 0x00 值的默认值,并用 0x00 值填充短 iv。最好明确提供 iv。 嗨 Trang,我需要在我的 ios 应用程序中使用 aes 解密,但我不知道如何解密,请告诉我如何逐步解密数据?谢谢。以上是关于钛 AES/CBC/PKCS5Padding的主要内容,如果未能解决你的问题,请参考以下文章