如何用Unix终端命令解密PHP openssl_encrypt生成的AES-256-CTR密文
用Unix终端解密PHP openssl_encrypt生成的AES-256-CTR密文
你的终端解密命令失败的核心原因是:openssl enc的-K(密钥)和-iv(初始向量)参数要求传入十六进制格式的值,但你直接传入了明文字符串。而PHP的openssl_encrypt会直接将$password和$iv的原始字符串字节作为密钥和IV使用,因此需要先把这些字符串转换成十六进制,再传入终端命令。
正确的解密命令
echo -n "3fd4e82b5c21ad4c2abd74" | xxd -r -p | openssl enc -aes-256-ctr -K 3132323435363738393261626364656631323331353637333930613163646532 -iv 33323334333637383930666263656566 -d -nosalt
参数转换说明
- PHP中的密码字符串
1224567892abcdef1231567390a1cde2,每个ASCII字符转换为两位十六进制后,得到3132323435363738393261626364656631323331353637333930613163646532,作为-K的参数。 - PHP中的IV字符串
3234367890fbceef,转换为十六进制后得到33323334333637383930666263656566,作为-iv的参数。
执行上述命令后,即可输出明文hello world。
内容的提问来源于stack exchange,提问作者A.K.M.Touhidul Islam
相关产品推荐
相关产品推荐

