1. 程式人生 > >python3 常見解密加密演算法

python3 常見解密加密演算法

一.使用base64

Base64編碼,64指A-Z、a-z、0-9、+和/這64個字元,還有“=”號不屬於編碼字元,而是填充字元。

優點:方法簡單

缺點:不保險,別人拿到密文可以自己解密出明文

編碼原理:將3個位元組轉換成4個位元組((3 X 8)=24=(4X6)),先讀入3個位元組,每讀一個位元組,左移8位,再右移四次,每次6位,這樣就有4個位元組了。
解碼原理:將4個位元組轉換成3個位元組,先讀入4個6位(用或運算),每次左移6位,再右移3次,每次8位,這樣就還原了。

Python3中base64模組與Python2使用方法有了明顯的不一樣,接下來簡要介紹下base64模組。

Python 3.5.2+ (default, Aug  5 2016, 08:07:14)
[GCC 6.1.1 20160724] on linux
Type "help", "copyright", "credits" or "license" for more information.

首先匯入base64模組

>>> import base64
>>> my_str='hello'

然後把字串轉碼為UTF-8格式:

>>> utf_str=my_str.encode(encoding="utf-8")
>>> utf_str
b'hello'

我們試著用Base64方式加密:

>>> word=base64.b64encode(utf_str)
>>> word
b'aGVsbG8='

最後用Base64方式解密:

>>> hello=base64.b64decode(word.decode())
>>> hello
b'hello'
>>> hello.decode()
'hello'
可以看到,已經成功解密出來!

二.使用pycrypto

Python有個專門的加密解密工具包pycropto,這個包裡面實現了MD2,MD4,MD5,RIPEMD,SHA1,SHA256等加密演算法。

>>> from Crypto.Hash import MD5

>>> obj = MD5.new()

>>> obj.update(b"hello")
>>> obj.hexdigest()

>>> obj.hexdigest()
'5d41402abc4b2a76b9719d911017c592'