简单的PHP加密/解密(Mcrypt,AES)
发布时间:2020-12-13 21:57:57 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找使用Mcrypt的简单但加密强大的AES实现AES. 希望将其归结为一对简单的函数,$garble = encrypt($key,$payload)和$payload = decrypt($key,$garble). 解决方法 我最近正在学习这个主题,并将此答案作为社区维基发布,以分享我的知识,有待纠正. Mcrypt D
我正在寻找使用Mcrypt的简单但加密强大的AES实现AES.
希望将其归结为一对简单的函数,$garble = encrypt($key,$payload)和$payload = decrypt($key,$garble). 解决方法
我最近正在学习这个主题,并将此答案作为社区维基发布,以分享我的知识,有待纠正.
> Mcrypt Documentation 我的理解是,使用Mcrypt可以使用以下常量作为选项来实现AES: MCRYPT_RIJNDAEL_128 // as cipher MCRYPT_MODE_CBC // as mode MCRYPT_MODE_DEV_URANDOM // as random source (for IV) 在加密期间,应使用随机化的非秘密初始化向量(IV)来随机化每个加密(因此相同的加密永远不会产生相同的加密).该IV应附加到加密结果,以便在解密期间稍后使用. 结果应为Base 64编码,以实现简单的兼容性. 执行: <?php define('IV_SIZE',mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC)); function encrypt ($key,$payload) { $iv = mcrypt_create_iv(IV_SIZE,MCRYPT_DEV_URANDOM); $crypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$payload,MCRYPT_MODE_CBC,$iv); $combo = $iv . $crypt; $garble = base64_encode($iv . $crypt); return $garble; } function decrypt ($key,$garble) { $combo = base64_decode($garble); $iv = substr($combo,IV_SIZE); $crypt = substr($combo,IV_SIZE,strlen($combo)); $payload = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$crypt,$iv); return $payload; } //:::::::::::: TESTING :::::::::::: $key = "secret-key-is-secret"; $payload = "In 1435 the abbey came into conflict with the townspeople of Bamberg and was plundered."; // ENCRYPTION $garble = encrypt($key,$payload); // DECRYPTION $end_result = decrypt($key,$garble); // Outputting Results echo "Encrypted: ",var_dump($garble),"<br/><br/>"; echo "Decrypted: ",var_dump($end_result); ?> 输出如下: Encrypted: string(152) "4dZcfPgS9DRldq+2pzvi7oAth/baXQOrMmt42la06ZkcmdQATG8mfO+t233MyUXSPYyjnmFMLwwHxpYiDmxvkKvRjLc0qPFfuIG1VrVon5EFxXEFqY6dZnApeE2sRKd2iv8m+DiiiykXBZ+LtRMUCw==" Decrypted: string(96) "In 1435 the abbey came into conflict with the townspeople of Bamberg and was plundered." (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |