我正在使用Laravel 5,並且對於其中一位租戶是系統中存儲的電子郵件必須加密的項目。我使用Laravel 5的Crypt::
外觀,以及相關的encrypt()
和decrypt()
方法。Laravel 5加密 - 給定相同字符串的不同值?
問題在於即使給定相同的字符串,加密值似乎也不相同。起初,我認爲它可能與VARCHAR
字段的最大長度有關,但是這兩個散列值都會在字段中設置的255長度以下返回。
舉例來說,這個轉儲;
PHP
$hash1 = 'eyJpdiI6InJFNTFkdktpVU9cL1wvRTJPVk94SURiUT09IiwidmFsdWUiOiJIZVh4Y1NyUGpVcTVFVTNSbWdUNnJCUWRHSGZTcnFTQWJKa1h0Q1wvMEVtZnFuM3dDeFwvXC9hdUs4enFXXC94dEJ0cSIsIm1hYyI6IjFjNjZjODFjMjI5NTQ0NmVhZDUwODQzODE0OTQ4NTdjMzAxNTQ5Y2ZjY2M4YzRiODU0ZjIwNDhmMDA0Yjc4OWQifQ';
$hash2 = 'eyJpdiI6ImRBVWNKVTlJZVFmckk2T0c4cXNObFE9PSIsInZhbHVlIjoidElqcE5TMUFwVHZXeW12R3hKMFVFWlR0WmgxOFRBbW5cL2V3dUJ6VndsdktLYjVGR2JQQWpSUUNUWDBJbU5OQWEiLCJtYWMiOiI3MjM3ODNiMzc0NDJlNDVhYzFkOTBmMjhhOTk0MTUyM2FlNzM5ZGE4ODE3MTJlMDM5NWZiMzViZjM5OTA0MGRhIn0=';
$dump = [
'hash1' => $hash1,
'hash2' => $hash2,
'string1' => Crypt::decrypt($hash1),
'string2' => Crypt::decrypt($hash2)
];
return $dump;
傾銷對象
hash1: "eyJpdiI6InJFNTFkdktpVU9cL1wvRTJPVk94SURiUT09IiwidmFsdWUiOiJIZVh4Y1NyUGpVcTVFVTNSbWdUNnJCUWRHSGZTcnFTQWJKa1h0Q1wvMEVtZnFuM3dDeFwvXC9hdUs4enFXXC94dEJ0cSIsIm1hYyI6IjFjNjZjODFjMjI5NTQ0NmVhZDUwODQzODE0OTQ4NTdjMzAxNTQ5Y2ZjY2M4YzRiODU0ZjIwNDhmMDA0Yjc4OWQifQ"
hash2: "eyJpdiI6ImRBVWNKVTlJZVFmckk2T0c4cXNObFE9PSIsInZhbHVlIjoidElqcE5TMUFwVHZXeW12R3hKMFVFWlR0WmgxOFRBbW5cL2V3dUJ6VndsdktLYjVGR2JQQWpSUUNUWDBJbU5OQWEiLCJtYWMiOiI3MjM3ODNiMzc0NDJlNDVhYzFkOTBmMjhhOTk0MTUyM2FlNzM5ZGE4ODE3MTJlMDM5NWZiMzViZjM5OTA0MGRhIn0="
string1: "[email protected]"
string2: "[email protected]"
點輸入到位隱私的人物,但他們是完全一樣的。我唯一能想到的其他事情可能是某種字符集格式化?
任何幫助解決這個將不勝感激!
問候。
等等,如果解密後的散列最終是相同的,那麼問題是什麼? –
如果密鑰不同,則加密值將不同;而且鑰匙不應該總是一樣,否則它會變得可以預測並容易破裂。這就是整個點 –
@MarkBaker道歉,我一般都不太瞭解加密 - 我認爲相同的價值將會被賦予兩種方式。關鍵是這些值必須存儲在數據庫表中,但是作爲數據行的檢索點,我現在必須找出另一種更可行的方法:)。 – VitaCoco