Я получил следующие функции в устаревшем приложении:
return trim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
$key,
$data,
MCRYPT_MODE_ECB,
mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND)
)
)
);
и
return trim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
$key,
base64_decode($data),
MCRYPT_MODE_ECB,
mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND)
)
);
который я хотел бы заменить на openssl
, потому что mcrypt
устарел с php 7.0.
Я узнал, что это должно быть возможно, но мне нужно заполнение нулями, чтобы сделать его совместимым, а не использовать PKCS#7
. Пока я остановился на этом:
return trim(
base64_encode(
openssl_decrypt(
base64_decode($data),
"aes-256-ecb",
$key,
OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,
$key
);
OPENSSL_ZERO_PADDING
не переключается на нулевое заполнение, но отключает заполнение PKCS7. После этого заполнение нулями должно быть реализовано вручную, так какopenssl_encrypt/decrypt
его не поддерживает. - person user 9014097   schedule 18.03.2021