加密模組包含兩種加密方式,分別為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...