在终端中运行命令openssl dgst -sha1 -sign PrivateKey.pem -out Register1.sha1 Register1.txt,然后运行命令openssl enc -base64 -in Register1.sha1 -out Register1.b64 -A我得到一个包含哈希文本的文件。我需要在PHP中重现相同的结果。我可以加密和解密文本。但是,PHP生成的散列与在openssl中运行命令生成的散列不同
$encrypt_method = "DES-EDE-ECB";
// //PRIVATE KEY
$private_key = openssl_pkey_get_private(file_get_contents('./hash_key/ChavePrivada.pem'));
$private_key_details = openssl_pkey_get_details($private_key);
//PRIVATE KEY
$iv = substr(hash('sha1', $encrypt_method), 0, 16);
$key = hash('sha1', $private_key_details['key']);
// $encryptToken = openssl_encrypt($string, $encrypt_method, $key, OPENSSL_RAW_DATA, $iv);
$encryptToken = openssl_encrypt($string, $encrypt_method, $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);;
$encryptToken = base64_encode($encryptToken);//STRING ENCRYPTED
$decryptToken = openssl_decrypt(base64_decode($encryptToken), $encrypt_method, $key, OPENSSL_RAW_DATA, $iv);//STRING DECRYPTED
$output = [
'encryptToken' => $encryptToken,
'decryptToken' => $decryptToken,
];
return $output;
1条答案
按热度按时间pcww981p1#
您的PHP代码会立即严重偏离轨道,我不知道您为什么要这样做。
你知道
openssl_sign()
的存在,对吧?短:
完整:
输出: