PHP Mcrypt,它真的有多安全?

Arj*_*man 7 php encryption mcrypt

目前我正在开发一个处理一些非常敏感的个人信息的项目,虽然它不是后备数字,但仍然是敏感的个人信息,我想尽我所能来加密并将这些信息作为安全的方式存储在mysql中尽可能.所以现在我正在积极寻找可以处理这些敏感信息的一些安全措施.

我发现加密/解密字符串和文本块的一种简单方法是使用mcrypt.但是当我在stackoverflow上搜索mcrypt时,我注意到很多人都说mcrypt不是那么安全.

所以现在我想知道,它到底有多安全?如果安全地存储密钥,是否需要大量的黑客技能,比如专业技能,才能破解和解密存储的信息?我是否需要担心一个技能很少的黑客可以解密我将要存储在mysql服务器中的加密信息?那么破解使用mcrypt加密的加密信息需要哪些技能?

如果Mcrypt不够用,那么使用gnupg扩展并不复杂的好选择是什么?

Ja͢*_*͢ck 16

您可以遵循的小指南,以避免一些陷阱并应用一些建议.

  • 不要为两个不同的消息重复使用相同的加密密钥和初始化向量(IV).

如果攻击者设法在传输过程中使用相同的密钥和IV拦截两个或多个消息,则这样做会冒明文行的风险.

  • 不要使用ECB模式; OFB和CTR模式稍好一些,但建议使用CBC或CFB模式.

不使用ECB的主要原因是因为此模式泄漏了有关可能破坏编码数据流的重复纯文本块的信息.

OFB和CTR更好,但是他们遭受上述多次使用相同IV +组合键的安全问题.

CFB和CBC对IV +密钥重用的抵抗力最强,但具有相同公共前缀的单独消息将泄露出所述前缀的长度.此外,CFB泄漏了第一个不相同的纯文本块的差异.

  • 确保您拥有强大的加密密钥

    应该从可打印的ASCII中选择(例如,不是 "我的超级强密钥"); PBKDF2将是首选(很快就会得到本地支持,直到谷歌它).很明显,这把钥匙必须保持安全; 如果你失去它,再见数据.

  • 使用良好的熵源生成初始化向量.

    当你打电话时,Mcrypt可以选择使用MCRYPT_DEV_RANDOM或MCRYPT_DEV_URANDOM mcrypt_create_iv().

希望对你有帮助 :)