我想使用AES加密来创建安全的电子邮件。我按照这篇文章的建议: https://stackoverflow.com/a/12339418/787794
到目前为止一切正常,直到我尝试通过电子邮件发送初始化向量(IV)和密文。我认为IV在电子邮件格式中以某种方式被破坏,并且当我去解密时会产生问题。
答案 0 :(得分:1)
通常,IV数据以密文为前缀。对于CBC,它的大小始终与块大小相同,因此如果另一方没有mcrypt_get_iv_size
,则不应该出现问题。
请注意,要创建安全的电子邮件,需要的不仅仅是加密;至少在IV和密文上添加HMAC。应该避免调用srand
,因为随机数生成器应该已经被播种。此外,该示例不使用AES,而是使用MCRYPT_RIJNDAEL_128
。只是密码的哈希不是一个好的基于密码的密钥派生函数。
对于二进制数据,您可能需要查看SMIME或PGP规范。如果要将所有内容存储在消息体中,则至少需要对IV,密文进行base64编码,并希望使用HMAC创建认证标记。
对于使用AES& CBC +前缀IV,只需看看我重写的mcrypt_encrypt
示例代码。
答案 1 :(得分:0)
使用base64_encode()
和base64_decode
。这将允许IV通过更简单的文本格式发送,如电子邮件,HTML,等等。