Laravel 大將之 加密 模組

2021-09-16 22:46:03 字數 1941 閱讀 5446

加密模組包含兩種加密方式,分別為encrypt加密與hash加密;

encrypt加密將目標文字轉換成具有不同長度的、可逆的密文;hash加密將目標文字轉換成具有相同長度的、不可逆的雜湊字串;

在應用程式中使用哪一種加密方式取決於業務需求,基本原則如下:如果被保護資料僅僅用作比較驗證,在以後不需要還原成明文形式,則使用hash加密;如果被保護資料在以後需要被還原成明文,則需要使用encrypt加密。

手動建立;encrypt加密建構函式的第乙個引數是金鑰,第二個引數是加密演算法型別,預設是'aes-128-cbc';金鑰的長度與加密演算法型別有關聯,'aes-128-cbc'演算法的金鑰長度是16位,'aes-256-cbc'演算法的金鑰長度是32位;

$encrypter = new illuminate\encryption\encrypter(random_bytes(16));

$encrypter = new illuminate\encryption\encrypter(random_bytes(16), 'aes-128-cbc');

$encrypter = new illuminate\encryption\encrypter(random_bytes(32), 'aes-256-cbc');

呼叫encrypt加密例項的encrypt方法對指定物件進行加密;encrypt方法有兩個引數,第乙個引數是加密的目標物件,第二個引數是布林值,表示是否對第乙個引數進行序列化操作;

$encrypter->encrypt('foo');
如果是加密字串型別的物件,可以呼叫encryptstring方法;encryptstring方法只有乙個引數,即字串物件;

$encrypter->encryptstring('foo');
呼叫encrypt加密例項的decrypt方法對指定物件進行解密;decrypt方法有兩個引數,第乙個引數是解密的目標物件,第二個引數是布林值,表示是否對第乙個引數進行序列化操作;

$encrypter->decrypt($encrypter->encrypt('foo'));
encryptstring方法對應的是decryptstring方法;

$encrypter->decryptstring($encrypter->encryptstring('foo'));
最方便的方式,從服務容器取hash加密物件;

手動建立;

$hasher = new \illuminate\hashing\bcrypthasher;

呼叫hash加密物件的make方法;

$hasher->make('password');
也可以呼叫全域性幫助函式bcrypt

bcrypt('password');
因為雜湊加密是不可逆的,所以要想判斷是否值相等,可以呼叫check方法;check方法的本質是將傳入值也進行雜湊加密,判斷加密後的字串是否相同;

$hasher->check('password', $hasher->make('password'));

加密模組hashlib模組

資料時代,為了防止資料安全性,防止資料洩露,會對資料進行加密,對於一些敏感資料庫,更是如此。加密是最常見的保密手段,利用技術手段把重要的資料變為亂碼。hash型別屬於雜湊型別,把任意長度的資料通過演算法函式轉換成固定長度的值,特點 不可逆 無法根據雜湊值來還原原來的資料 定長輸出 無論輸入的原始資料...

python加密模組 hashlib模組

用於加密相關的操作,3.x裡代替了md5模組和sha模組,主要提供sha1,sha224,sha256,sha384,sha512,md5演算法 sha比md5 更複雜 md5 不能反解 具體使用方法 匯入模組 import hashlib 生成乙個加密的物件並複製給變數 m hashlib.md5...

加密模組hashlib

md5加密 不可逆加密 碰撞解密 用資料再進行一次加密,與原加密結果做匹配 import hashlib data 資料 這個必須是字串型別的,其他型別的不可以 lock obj hashlib.md5 data.encode utf 8 傳入加密資料,生產加密鎖物件,result lock obj...