【发布时间】:2016-01-29 11:13:41
【问题描述】:
我有一个应用程序,它使用 CBC 方法在商定的密钥和 IV 上以 TripleDES 加密方式在供应商的应用程序之间交换数据。我的应用程序是 VB.NET 应用程序,而供应商的应用程序是 PHP 网页。奇怪的是,我似乎无法匹配供应商应用程序的输出。
密钥和初始向量以明文形式提供给我们双方。有趣的是,在供应商的应用程序中,他们不会散列或将密钥和 IV 转换为 256 位密钥和 128 位 IV。他们只是使用 PHP 中的 mcrypt 插件在代码中使用纯文本格式。
$key = 'plaintextkey';
$iv = 'plaintextIV'
$enc = mcrypt_encrypt(MCRYPT_3DES, $key, $string, MCRYPT_MODE_CBC, $iv)
它产生了一个有趣的文本,例如:
û!‰+«°z0"üÐÑn我的问题是:
- 如果要明文做参数,PHP怎么做 实现/将其转换为 256 位字符?
- 如果使用CBC方法,它不应该依赖于之前的 加密文本?
- 在我给定的格式中是否有 TripleDES 结果?因为作为我 通过互联网搜索,我从未见过结果 这种形式的加密。
【问题讨论】:
-
那么我想他们采取了一种相当简单的方法。尝试将它们指向PHP Manual page,它会建议正确的做事方式,所有这些都是在示例中而不是对 mcrypt 函数的描述
-
@RiggsFolly 那么,他们对密钥和 IV 的使用是错误的吗?我看到在以前版本的 PHP 中,他们添加了 \0 填充 以前的键和 IV 用 '\0' 字节填充到下一个有效大小。,所以如果他们使用最新的 PHP,它会'已经返回假?
标签: php encryption mcrypt tripledes