【问题标题】:AES Encrypt/Decrypt Delphi & PHPAES 加密/解密 Delphi & PHP
【发布时间】:2012-08-27 08:02:55
【问题描述】:

我的 Delphi 应用程序使用 TurboPower LockBox 3 使用 AES 256 加密纯文本信息。我现在想使用 PHP 解密此信息。 但 TurboPower LockBox 3 存在一些互操作性问题。

详情请查看 LockBox 3 作者的帖子:

http://lockbox.seanbdurkin.id.au/tiki-view_forum_thread.php?comments_parentId=363&topics_offset=1

还有一篇关于 Stackoverflow 的类似帖子

Secure keypair encryption solution in Delphi & PHP?

在 LockBox 3 中,在加密期间,您设置了密码。然后将此密码用作生成密钥和 iv 的种子。那么有没有人能够模仿 PHP 端的密钥生成方法?或者有什么方法可以让 LockBox 3 生成的 Key/IV 并将其放入我的 PHP 代码中,以便可以解密文件?

【问题讨论】:

    标签: php delphi encryption aes lockbox-3


    【解决方案1】:

    IV

    如前所述,IV nonce 被添加到密文消息之前。因此,要在 PHP 端获取它,只需提取前 8 个字节即可。

    按键

    您需要确定共享密钥是密码字符串格式还是二进制密钥格式。 symetric Key 类 (TSymetricKey) 有一个方法 SaveToStream(),它可以按您的预期工作。 TCodec 组件有一个 Key 属性,在设置密码、链接模式和密码后可用。

    所有方法都是自文档化的,并且几乎按照他们读到的方式执行,但是如果您需要一些演示代码,将密钥保存到流中,请告诉我。

    【讨论】:

    • 所以我尝试检索 LockBox 3 内部生成的密钥,据我了解,生成的密钥是 UTF16LE 格式,并且有些代码点无法转换为 UTF8。我该怎么做?任何解决方法?
    • 密钥是二进制的。只能说是UTF16或UTF8的字符串。
    • 此外,UTF16 字符串中没有无法转换为 UTF8 的代码点。这就是UTF16中有一个“U”的原因。在维基百科中查找。
    • 抱歉我的无知,在wiki上查了一下。不同之处仅在于将位分组以表示代码点的方式。积极的一点是,我现在能够解密 php PROVIDED 中的数据,它是 16 字节的倍数。所以我认为填充方案现在正在制造障碍。从stackoverflow.com/questions/10847759/…这篇帖子的回答看来,CBC 使用了密文窃取?
    • 那么,有什么办法可以强制 LockBox 3 不使用 CTS 而是使用一些更简单的填充方案?还是我需要在 PHP 端实现 stackoverflow.com/questions/10411036/… 描述的东西?
    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2012-02-24
    • 2014-09-12
    • 2014-06-28
    相关资源
    最近更新 更多