雙向加密演算法
⑴ 12:字元串加密、解密
編碼: 將計算機中的字元串按照一定的順序表示成二進制數據的過程
各國字元編碼都不一樣:
1、計算機-> 表示[英文字母、數字、部分特殊符號]-> ascii編碼 [0~256]
2、萬國碼,統一字元編碼[號稱可以統一全球范圍內任何語言的表示方式]
任何語言中的任何數據,都可以使用一個字元來表示 unicode編碼
3、中國有GB2312-> GBK -> GB18030
4、數據傳輸編碼:unicode transfer format 8 bit [UTF-8]
python中的編碼解碼:
要命的規則:字元串的編碼解碼,一直都是任何語言中一個難點和重點
任何字元串->都是由位元組組成的!
python3中:字元:(str);位元組(bytes)
字元->位元組:encode 編碼:將一個字元串編碼成計算機可以操作的二進制數據
位元組->字元:decode 解碼:將一個二進制數據按照指定的編碼~解碼成自然數據
什麼是加密: 將一個明文數據,按照指定的演算法,運算得到一個其他的可以隱藏真實信息的密文數據,這個過程稱為加密;處理的演算法稱為加密演算法;用到的關鍵數據稱為密鑰
什麼是解密: 按照指定的演算法和關鍵數據,將一個密文數據進行逆向運算得到正確的明文數據的過程成為解密操作
(1)、單向加密演算法:只能加密,不能解密的演算法
如:用戶賬號密碼(單向加密)存儲,此時任何人都不能查看該用戶的明文密碼
流程->用戶輸入明文密碼->加密->和存儲的密文密碼進行比較->相等-成功
單向散列加密演算法-> MD5加密
單項哈希加密演算法-> SHAX加密
(2)、雙向加密演算法:可以加密,加密的數據可以解密得到明文數據
使用在更多的場景;數據進行加密傳輸->目標地址->解密得到明文數據進行處理
對稱加密:加密和解密使用相同的秘鑰;
非對稱加密:加密和解密使用不同的秘鑰;如HTTPS傳輸數據
hashlib主要提供字元加密功能,將md5和sha模塊整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等演算法
注意: hashlib 加密啊的字元串類型為二進制編碼,直接加密字元串會報如下錯誤:
有兩種方式可以將字元串轉化為二進制數據
⑵ 3des加密原理
使用3Des加密演算法前,我們需要了解一下當前主流的加密模式:單向加密和雙向加密,兩者最大的區別在於加密的密文是否具有可逆性。
單向加密:將需要加密的數據進行加密,並且密文不可進行解密,像我們常用的加密演算法MD5就屬於這種。
雙向加密:和單向加密不同的是可以通過某些方式進行加解密的操作,其中分為對稱加密和非對稱加密。
對稱加密:指數據使用者必須擁有相同的密鑰才可以進行加密解密,就像彼此約定的一串暗號,本文介紹的3Des加密就屬於這種。
非對稱加密:通過一組包含公鑰和私鑰的密碼來加密解密,用公鑰加密,私鑰解密,首推的就是RSA加密
---------------------------------------------------------------------------------------------------------------------------------------
3Des加密演算法,由於可以逆推原文,所以主要通過本地的唯一密鑰來保證數據的安全性,我這邊通過生成隨機的256位加密字元串存儲在本地,代碼讀取時將其通過md5加密成32位的字元串(由於本地有原始密鑰,不必擔心md5加密不可逆),最後以這32位加密字元串作為密鑰進行加解密的操作。