在 PHP 中找不到正确的 3DES 密码
Cannot find the right 3DES cipher in PHP
我正在尝试计算 PHP 函数以在 ECB 模式 中获得 3DES(三重 DES)。但是我得到了错误的结果。
My result : 615EDC0E8EAD5DDE
Expected result : 7B66D9A5010A8035
(预期结果是用HSM计算出来的,网站确认)http://tripledes.online-domain-tools.com/
这是我的 PHP 函数,作为参数:
$data = "3200000025381234"
$key = "98137332E06BBA25AEE51CFD150EA8E3"
function tripleDES($data, $key) {
$key= hex2bin($key);
$data = hex2bin($data);
$enc = openssl_encrypt($data, 'des-ede3', $key, OPENSSL_RAW_DATA |
OPENSSL_ZERO_PADDING);
return strtoupper(bin2hex($enc));
}
我做错了什么?
多亏了Topaco的回答,我明白了我的错误。
所以我使用了这个 github 项目:https://github.com/gilfether/phpcrypt 并以这种方式更正了我的代码(使用我的 16 字节密钥):
function triple_DES($data, $key){
$key = hex2bin($key);
$data = hex2bin($data);
$crypt = new PHP_Crypt($key, PHP_Crypt::CIPHER_3DES, PHP_Crypt::MODE_ECB);
$encrypt = $crypt->encrypt($data);
return strtoupper(bin2hex($encrypt));
}
我正在尝试计算 PHP 函数以在 ECB 模式 中获得 3DES(三重 DES)。但是我得到了错误的结果。
My result : 615EDC0E8EAD5DDE
Expected result : 7B66D9A5010A8035
(预期结果是用HSM计算出来的,网站确认)http://tripledes.online-domain-tools.com/
这是我的 PHP 函数,作为参数:
$data = "3200000025381234"
$key = "98137332E06BBA25AEE51CFD150EA8E3"
function tripleDES($data, $key) {
$key= hex2bin($key);
$data = hex2bin($data);
$enc = openssl_encrypt($data, 'des-ede3', $key, OPENSSL_RAW_DATA |
OPENSSL_ZERO_PADDING);
return strtoupper(bin2hex($enc));
}
我做错了什么?
多亏了Topaco的回答,我明白了我的错误。 所以我使用了这个 github 项目:https://github.com/gilfether/phpcrypt 并以这种方式更正了我的代码(使用我的 16 字节密钥):
function triple_DES($data, $key){
$key = hex2bin($key);
$data = hex2bin($data);
$crypt = new PHP_Crypt($key, PHP_Crypt::CIPHER_3DES, PHP_Crypt::MODE_ECB);
$encrypt = $crypt->encrypt($data);
return strtoupper(bin2hex($encrypt));
}