Php 如何用aes表示openssl_加密函数
我想在autoit中使用php openssl_加密函数。 我找到了,所以我应该能够创建一个openssl_加密函数。 这是我需要在autoit中复制的功能:Php 如何用aes表示openssl_加密函数,php,encryption,aes,autoit,php-openssl,Php,Encryption,Aes,Autoit,Php Openssl,我想在autoit中使用php openssl_加密函数。 我找到了,所以我应该能够创建一个openssl_加密函数。 这是我需要在autoit中复制的功能: function cripta($data){ return openssl_encrypt($data,'AES-128-CBC',base64_decode("dGVzdHBhc3N3b3JkLi4uLg=="),0,"0102030405060708"); } 我用以下代码尝试了autoit: #Include "AES.
function cripta($data){
return openssl_encrypt($data,'AES-128-CBC',base64_decode("dGVzdHBhc3N3b3JkLi4uLg=="),0,"0102030405060708");
}
我用以下代码尝试了autoit:
#Include "AES.au3"
#include "BASE64.au3"
Global $mainKey = "dGVzdHBhc3N3b3JkLi4uLg=="
Global $mainIV = "0102030405060708"
_AES_Startup()
ConsoleWrite(cripta("test") & @CRLF)
Func cripta($Data)
Global $mainKey, $mainIV
$Key = _Base64Decode($mainKey)
Return BinaryToString(_Base64Encode(_AesEncrypt($Key, $Data, $AES_CBC_MODE, $mainIV)))
EndFunc
并尝试:
#Include "AES.au3"
#include "BASE64.au3"
Global $mainKey = "dGVzdHBhc3N3b3JkLi4uLg=="
Global $mainIV = "0102030405060708"
_AES_Startup()
ConsoleWrite(cripta("test") & @CRLF)
Func cripta($Data)
Global $mainKey, $mainIV
$Key = _AesEncryptKey(_Base64Decode($mainKey))
Return BinaryToString(_Base64Encode(_AesEncryptCBC($Key, $mainIV, $Data)))
EndFunc
但是每次的输出都是不同的(php、first autoit和second autoit)。
我原以为openssl只是aes加密的base64编码,但事实似乎并非如此。有人能帮我吗,不仅仅是在autoit部分,还有人能帮我解释一下如何使用aes和base64函数实现openssl_加密函数。
谢谢。
openssl\u encrypt
不直接编码任何内容,它只返回由字节组成的字符串。不要被官方API所愚弄,密钥和IV也需要以字节为单位指定
因此,您的第一个autoit\u CBC
通常应返回相同的二进制字符串。如果要比较文本,可能还需要将openssl\u encrypt
编码为Base64
使用大于16字节的纯文本消息进行测试。如果您使用如此大的字符串,并且只有最后一部分不同,那么
\u AESCEncryptCBC
可能不会使用PKCS#7兼容的填充(OpenSSL的默认设置)。OpenSSL\u encrypt
不会直接编码任何内容,它只返回由字节组成的字符串。不要被官方API所愚弄,密钥和IV也需要以字节为单位指定
因此,您的第一个autoit\u CBC
通常应返回相同的二进制字符串。如果要比较文本,可能还需要将openssl\u encrypt
编码为Base64
使用大于16字节的纯文本消息进行测试。如果您使用如此大的字符串,并且只有最后一部分不同,那么\u AESCEncryptCBC
可能不会使用PKCS#7兼容的填充(OpenSSL的默认设置)