繁体   English   中英

Laravel,将加密的机密存储在MySQL索引列中

[英]Laravel, storing encrypted secrets in a MySQL indexed column

我已经知道答案了,但是我想更多地了解下一步的发展方向。

我想在应用程序的数据库中通过加密来保护用户的电子邮件,但是作为电子邮件的电子邮件,我也希望它们作为用户表上的索引。

我正在为数据库播种,并不断收到错误:

[Illuminate\Encryption\DecryptException]  
Invalid data.

我发现Crypt :: encrypt()生成的某些机密似乎超出了MySQL在唯一索引上的255个字节的限制。 我想最终我将不得不扩展Illuminate包的Encrypter类,并覆盖核心加密方法以使用不会扩展字符串的方法。

有什么我想念的东西可以做得更好吗? 无论如何,将它们存储为加密格式可能不是很有效,但是我想不出什么更好的方法了?

您的方法毫无意义,因为Crypt :: encrypt()自动将值“加盐”。 同一封电子邮件每次都会生成不同的加密值。 自行检查:

for($i = 1; $i <= 10; $i++)
{
    echo Crypt::encrypt('secret');
}

即使您设法克服索引列大小限制,您仍然将无法检查重复项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM