1、 前言
我們提到的加密方法都是二進制編碼格式的加密,它對應于Python中的位元組,
因此,當我們在Python中加密操作時,我們應該確保對位元組進行操作,否則我們將報告一個錯誤,
encode()和decode()方法可用于將字串和位元組相互轉換,具體如下:
# -*- coding:UTF-8 -*- __author__ = 'rxz' # 方法中不傳引數則是以默認的utf-8編碼進行轉換 a = "中國歡迎您".encode("utf-8") print(a) # b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xac\xa2\xe8\xbf\x8e\xe6\x82\xa8' b = a.decode("utf-8") print(b) #中國歡迎您
注意:兩位數的十六進制通常用于顯示二進制位元組,
http://blog.sina.com.cn/s/blog_184e9f38b0102z262.html
使用binascii模塊,我們可以將以十六進制顯示的位元組轉換為加密和解密中更常用的顯示模式
# -*- coding:UTF-8 -*- __author__ = 'rxz' import binascii # 方法中不傳引數則是以默認的utf-8編碼進行轉換 a = "中國歡迎您".encode("utf-8") print(a) # b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xac\xa2\xe8\xbf\x8e\xe6\x82\xa8' c = binascii.b2a_hex('中國歡迎您'.encode()) print("c===",c) # c=== b'e4b8ade59bbde6aca2e8bf8ee682a8' d = binascii.a2b_hex(c) print(d) #b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xac\xa2\xe8\xbf\x8e\xe6\x82\xa8' v = binascii.a2b_hex(c).decode("utf-8") print(v)# 中國歡迎您 b = a.decode("utf-8") print(b) #中國歡迎您
2、 URL編碼
1介紹
普通URL只能包含ASCII字符,即字符、數字和一些符號,URL編碼是瀏覽器為避免URL中的特殊字符(如漢字)而采用的一種編碼方法,實際上,它是用%將ASCII范圍以外的字符轉換為十六進制格式,
# -*- coding:UTF-8 -*- __author__ = 'rxz' from urllib import parse a = parse.quote("中國歡迎您") print(a) # %E4%B8%AD%E5%9B%BD%E6%AC%A2%E8%BF%8E%E6%82%A8 b = parse.unquote(a) print(b) #中國歡迎您
3、 Base64編碼
1介紹
Base64是一種用64個字符表示任意二進制資料的方法,
Base64編碼是密碼學的基石,任何二進制資料都可以用Base64編碼,所有資料都可以被編碼到一個文本檔案中,該檔案只能用65個字符表示,(65個字符:a~z a~z 0~9+/=)編碼后的資料~=編碼前資料的4/3,大約大1/3,
2Base64編碼原理
將所有字符轉換為ASCII,
將ASCII碼轉換為8位二進制,
二進制3被分成一組(少于3的由0補充),總共24位,然后分成4組,每組6位,
在6位前加兩個0,組成8位,
將0后的二進制轉換為十進制,
從base64編碼表中獲取與decimal相對應的base64編碼,
三,Base64編碼說明
在轉換程序中,三個位元組的資料依次放入一個24位緩沖區,第一個位元組占據高位,
如果資料少于3個位元組,則緩沖區中的剩余位用0補充,然后,每次取出6個位元,根據其值編碼后選擇相應的字符作為輸出,
繼續,直到所有輸入資料都被轉換,
如果剩下最后兩個輸入資料,則在編碼結果后加一個“=”,
如果只剩下一個輸入資料,則在編碼結果后加2“=”,
如果沒有剩余的資料,不要添加任何內容,以確保資料恢復的正確性,
4Base64在Python中的使用
Python內置的Base64模塊可以直接對Base64進行編碼和解碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238890.html
標籤:Python
