簡體   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