Исходный код библиотеки -> Источник - quickbooks- php
function encrypt($key, $plain, $salt = null)
{
echo $key;
$plain = serialize(array( $plain, $salt ));
$crypt = mcrypt_module_open('rijndael-256', '', 'ofb', '');
if (false !== stripos(PHP_OS, 'win') and
version_compare(PHP_VERSION, '5.3.0') == -1)
{
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($crypt), MCRYPT_RAND);
}
else
{
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($crypt), MCRYPT_DEV_URANDOM);
}
$ks = mcrypt_enc_get_key_size($crypt);
$key = substr(md5($key), 0, $ks);
echo strlen($key);
mcrypt_generic_init($crypt, $key, $iv);
$encrypted = base64_encode($iv . mcrypt_generic($crypt, $plain));
mcrypt_generic_deinit($crypt);
mcrypt_module_close($crypt);
return $encrypted;
}
Я пытаюсь расшифровать его с помощью библиотек AES или rijndael, подобных этой - https://github.com/moeenz/rijndael
Я получаю ошибки для любого ключа или зашифрованного текста. Образец зашифрованного текста: «egIz4uEsWGJf5A653uKC + q3 + Drgw3C / jceZ + 96d00AZCP4 / eoVPjaLZFuRiGyGyhIBAxqIg2sZ0BT: оригинальный текст« STRINGHIBAxqIg2sZ0 » : "test_key"
один из python кодов, которые я пробовал:
from rijndael.cipher.crypt import new
from rijndael.cipher.blockcipher import MODE_OFB
from Crypto import Random
rjn = new(key, MODE_OFB, Random.new().read(32), 32)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "site-packages\rijndael\cipher\crypt.py", line 87, in new
return python_Rijndael(key,mode,IV,counter,blocksize,segment_size)
File "site-packages\rijndael\cipher\crypt.py", line 94, in __init__
raise ValueError("Blocksize should be 16, 24 or 32")
ValueError: Blocksize should be 16, 24 or 32