【发布时间】:2019-02-01 17:30:19
【问题描述】:
我正在使用 openssl_encrpyt 在 PHP 中加密客户端号码。
$value = '01715034842';
$key = 'pi3kn3W@k@cj3';
$iv = 'Toy@dtv!';
$cipher = 'bf-cbc';
$crypted = openssl_encrypt($value, $cipher, $key, true, $iv);
$hashValue = unpack('H*',$crypted);
最终结果是: 0b6b81176ac7c298ebcb294f0a581539
还有我的朋友在 Pearl 编程其他部分。而且他还使用相同的密钥和使用 Blowfish 对相同的数字进行编码(他正在使用珍珠库:https://metacpan.org/pod/release/LDS/Crypt-CBC-2.30/CBC.pm):
use Crypt::CBC;
use Crypt::Blowfish;
## szyfrowanie
my $key = 'pi3kn3W@k@cj3';
my $iv = 'Toy@dtv!';
my $cipher = Crypt::CBC->new( -key => $key,
-iv => $iv,
-header => 'none',
-cipher => 'Blowfish'
);
sub mkHash {
my $crypt = $cipher->encrypt_hex($_[0]);
# print 'Hash: '.$crypt."\n";
return $crypt;
}
sub deHash {
my $crypt = $cipher->decrypt_hex($_[0]);
# print 'string: '.$crypt."\n";
return $crypt;
}
my $clientHash = mkHash($smc);
而他对于同一组数据得到不同的结果: c5377bcf0f55af641709c35928350576
所以我们不能广泛使用这种语言。 这取决于编程语言的差异?或者这是我的代码或语言中的错误? 我认为当我们使用相同的数据集和相同的加密 (BlowFish CBC) 时,我们应该在每种语言中得到相同的结果。
期待对此案的意见。
最好的 巴特克。
【问题讨论】:
标签: php openssl crypt blowfish