1. 程式人生 > >The MAC is invalid

The MAC is invalid

地址 有關 數據加密 ron 數據 app 個數 Opens 解密

在使用laravel框架進行網站開發時,我們會使用laravel的Crypt類對用戶的密碼進行加密來達到信息加密的目的,Crypt類會對數據加密時會依賴APP_KEY,所以當更換了APP_KEY時,再在登陸校驗時使用Crypt::decrypt()函數時,會報The MAC is invalid.的錯誤。

所以解決的辦法就是通過原來的APP_KEY解密獲取到用戶最原始的數據,然後把用戶數據按照新的APP_KEY重新加密存入數據庫

手冊說明如下:
設置:
在使用 Laravel 的加密功能前,你需要先為 config/app.php配置文件中的 APP_KEY參數設置一個值,這個值是一個包含 32 個隨機字符的字符串。如果這個值沒有正確設置,所有由 Laravel 加密的數據都是不安全的。
基本用法:
通過 Crypt facade 可以加密一段數據。所有加密采用的都是 OpenSSL 和 AES-256-CBC cipher。並且,所有加密過的數據都會被賦予一個“信息驗證碼”(MAC),以防被加密後所得到的字符串被篡改。

由此說明encrypt生成的值和APP_KEY有關,並且加密數據後會賦予一個mac用在解密時的安全驗證,由於項目更換環境後需要重新生成APP_KEY,所以之前生成的數據在新的環境無法解密

以上報錯說MAC值無效並不是計算機mac地址,而是laravel的encrypt加密與其app_key有關,並且為每一個數據賦予了一個特殊的mac驗證碼

更換環境後需要先重新生成APP_KEY,然後數據庫中使用encrypt加密數據需要重新加密。

The MAC is invalid