Я шифрую номера клиентов в PHP, используя openssl_encrpyt.
$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 (он использует библиотеку Pearl: 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), мы должны получать одинаковые результаты на каждом языке.
Ждем мнения по этому делу.
Лучший Бартек.