为什么openssl encrypto的结果和php openssl_encrypt函数的结果不同



环境

  • PHP7.4
  • OpenSSL 3.0.0

问题

如下所示,openssl encrypto命令的结果与php openssl_encrypt函数的结果不同。为什么两个命令的结果不一样

$ php -r 'var_dump(openssl_encrypt("test@email.com", "bf-cbc","a88e2d710bee460c", 0,"11111111"));'串(24(";4iZiBW4UYWswVd3fkS+OOA=";

$ echo "test@email.com" | openssl enc -bf-cbc -K "61383865326437313062656534363063" -iv "3131313131313131" -base64 -A -provider legacy(如果是版本1,则无需添加提供程序旧版((输出(";4iZiBW4UYWsfLsRE7dKxZQ==";

在十六进制中;a88e2d710bee460c";等于";6138 3865 3264 3731 3062 6565 3436 3063〃;。($ printf a88e2d710bee460c | xxd的结果(
iv";11111111";等于";3133133133131 3131";($ printf 11111111 | xxd结果(

至于解密

$ echo "4iZiBW4UYWswVd3fkS+OOA==" | openssl enc -d -bf-cbc -K "61383865326437313062656534363063" -iv "3131313131313131" -base64 -provider legacy(输出时不带换行符(test@email.com

$ echo "4iZiBW4UYWsfLsRE7dKxZQ==" | openssl enc -d -bf-cbc -K "61383865326437313062656534363063" -iv "3131313131313131" -base64 -provider legacy(用换行符输出(test@email.com

我已经自行解决了这个问题。

当我们使用unix的echo命令时,除非添加选项-n,否则会出现换行符。

所以,下面两个命令是相同的结果。

CCD_ 7
string(24("4iZiBW4UYWswVd3fkS+OOA=";

$ echo -n "test@email.com" | openssl enc -bf-cbc -K "61383865326437313062656534363063" -iv "3131313131313131" -base64 -A -provider legacy(输出(4iZiBW4UYWswVd3fkS+OOA==

相关内容

  • 没有找到相关文章

最新更新