我需要一个PHP函数,AES256_encode($dataToEcrypt)将$data加密为AES-256,另一个AES256_decode($encryptedData)则相反。有谁知道这个函数应该有什么代码? 有一个difference between encrypting and encoding。 你真的需要AES-256吗?AES-256与AES-128的安全性没有那么重要;你更有可能在协议层搞砸而不是被黑客攻击,因为你使用了128位的分组密码而不是256位的分组密码。
$plaintext = 'This is just a test message.';
$encrypted = ExperimentalAES256DoNotActuallyUse::encrypt($plaintext, $eKey, $aKey);
$decrypted = ExperimentalAES256DoNotActuallyUse::decrypt($encrypted, $eKey, $aKey);
5条答案
按热度按时间aor9mmx11#
查看mcrypt module
AES-Rijndael示例摘自here
字符串
这就是decrypt function
nhaq1z212#
我需要一个PHP函数,
AES256_encode($dataToEcrypt)
将$data
加密为AES-256,另一个AES256_decode($encryptedData)
则相反。有谁知道这个函数应该有什么代码?有一个difference between encrypting and encoding。
你真的需要AES-256吗?AES-256与AES-128的安全性没有那么重要;你更有可能在协议层搞砸而不是被黑客攻击,因为你使用了128位的分组密码而不是256位的分组密码。
重要提示-使用库
x1c 0d1x的数据
一个快速而肮脏的AES-256实现
如果您对构建自己的感兴趣,不是为了在生产环境中部署它,而是为了您自己的学习,我提供了一个示例AES 256
字符串
用法
首先,生成两个密钥(是的,其中两个)并以某种方式存储它们。
型
然后要加密/解密消息:
型
如果你没有
random_bytes()
,就用random_compat。n3schb8v3#
MCRYPT_RIJNDAEL_256不等同于AES_256。
从AES中解密RIJNDAEL的方法是使用MCRYPT_RIJNDAEL_128,并在加密之前添加要加密的字符串
AES-256具有BlockSize= 128 bit和KeySize= 256 bit Rijndael-256具有BlockSize= 256 bit和KeySize= 256 bit
只有AES/Rijndael 128 bit是相同的。Rijndael-192和Rijndael-256与AES-192和AES-256不同(块大小和轮数不同)。
kkih6yb84#
您可以在PHP中使用
password_hash
函数加密和解密数据。你还需要一个成本函数。确保在PHP环境中启用了OpenSSL和Mcrypt扩展。字符串
$plaintext
:这个变量保存我们想要加密的消息。在该示例中,“我的秘密消息1234”是明文。$password
:在这里,我们定义用于导出加密密钥的密码。$method
:我们将加密方法设置为“aes-256-CBC”,这是密码块链接(CBC)模式中的AES-256加密模式。$key
:代码使用提供的密码生成加密密钥,使用password_hash()函数和PASSWORD_BCRYPT算法,成本因子为12。$iv
:CBC模式下的AES-256需要初始化向量(IV),并且必须正好是16字节长(128位)。$encrypted
:使用openssl_encrypt()函数获取加密密文,该函数接受明文、加密方法、加密密钥、IV等参数。然后对密文进行Base64编码以便于表示。$decrypted
:为了确保解密过程正常,我们使用openssl_decrypt()函数来反转加密过程。这将在解码Base64表示后返回原始明文。来源:Secure AES-256 Encryption and Decryption in PHP
rkttyhzu5#
字符串