日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python數據加密:抄起來,壞人都瞎了眼

來源: 責編: 時間:2023-09-18 21:40:49 396觀看
導讀數據加密是一種保護信息安全的技術,它可以把明文(原始的數據)轉換成密文(不可讀的數據),從而防止未經授權的人員訪問或修改數據。加密簡介數據加密有多種方法,勇哥能力有限,就介紹三種常見的數據加密方法:對稱加密、非對稱加密

數據加密是一種保護信息安全的技術,它可以把明文(原始的數據)轉換成密文(不可讀的數據),從而防止未經授權的人員訪問或修改數據。B9e28資訊網——每日最新資訊28at.com

B9e28資訊網——每日最新資訊28at.com

編碼與解碼

常所說的加密方式,都是對二進制編碼的格式進行加密的。Python 中進行加密時,要確保操作的是 Bytes,否則就會報錯。將字符串和 Bytes 互相轉換可以使用 encode()和 decode()方法。B9e28資訊網——每日最新資訊28at.com

  • encode():str 對象的方法,用于將字符串轉換為二進制數據(即 bytes),也稱為“編碼”。
  • decode():bytes 對象的方法,用于將二進制數據轉換為字符串,也稱為“解碼”。
  • 在設置解碼采用的字符編碼時,需要與編碼時采用的字符編碼一致。使用 decode()方法時,同樣不會修改原字符串。

1.decode() | encode()案例:B9e28資訊網——每日最新資訊28at.com

def data_encode(st):    """編碼 """    return st.encode("utf-8")def bs64_data_decode(st):    """解碼"""    return st.decode("utf8")

Base64 加/解密:base64 加密解密比較常見的就是圖片處理。B9e28資訊網——每日最新資訊28at.com

2.base64 案例:

"""base64信息轉圖片與圖片轉base64"""def base64_to_img(byte_str, file_path):    imgdata = base64.b64decode(byte_str)    with open(file_path, 'wb') as f:        f.write(imgdata)def base64_to_str(byte_str):    return base64.b64encode(byte_str.encode("utf-8")).decode('utf-8')

單向加密

單向加密是一種只能對數據進行加密,而不能進行解密的方法,也叫做散列函數或哈希函數。單向加密的目的是保證數據的完整性,即數據在傳輸或存儲過程中沒有被篡改或損壞。單向加密可以用來生成數據的摘要或簽名,用于驗證數據的來源和內容。單向加密有一個重要的特性,就是相同的輸入會產生相同的輸出,而不同的輸入會產生不同的輸出。常見的單向加密算法有:MD5、SHA 系列等。B9e28資訊網——每日最新資訊28at.com

1.MD5 加密示例:

def md5(st: str) -> str:    """    Args:        st:待加密字符串    Returns: 返回MD5 加密后的字符串    """    md = hashlib.md5()  # 創建MD5對象    md.update(st.encode(encoding="utf-8"))    return md.hexdigest()

2.sha1 加密示例:

SHA1 基于 MD5,加密后的數據長度更長,它對長度小于 264 的輸入,產生長度為 160bit 的散列值。比 MD5 多 32 位,因此,比 MD5 更加安全,但 SHA1 的運算速度就比 MD5 要慢。B9e28資訊網——每日最新資訊28at.com

def sha1_secret_str(st):    """    使用sha1加密算法,返回str加密后的字符串    Args:        st:    Returns:    """    sha = hashlib.sha1(st.encode("utf-8"))    return sha.hexdigest()

3.sha256 加密示例:

據說是比特幣挖礦就使用到。B9e28資訊網——每日最新資訊28at.com

SHA256是SHA-2下細分出的一種算法。B9e28資訊網——每日最新資訊28at.com

SHA-2,名稱來自于安全散列算法2(英語:Secure Hash Algorithm 2)的縮寫,一種密碼散列函數算法標準(哈希算法),由美國國家安全局研發,屬于SHA算法之一,是SHA-1的后繼者。B9e28資訊網——每日最新資訊28at.com

SHA-2下又可再分為六個不同的算法標準,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。這些變體除了生成摘要的長度 、循環運行的次數等一些微小差異外,B9e28資訊網——每日最新資訊28at.com

算法的基本結構是一致的。對于任意長度的消息,SHA256都會產生一個256bit長的哈希值,稱作消息摘要。這個摘要相當于是個長度為32個字節的數組,通常用一個長度為64的十六進制字符串來表示。B9e28資訊網——每日最新資訊28at.com

def sha256_single(st):    """    sha256加密    Args:        st: 加密字符串    Returns:加密結果轉換為16進制字符串,并大寫    """    sha_obj = hashlib.sha256()    sha_obj.update(st.encode("utf-8"))    return sha_obj.hexdigest().upper()

對稱加密

對稱加密是一種使用相同的密鑰來進行數據加密和解密的方法,也叫做私鑰加密或共享密鑰加密。對稱加密的優點是速度快,適合加密大量的數據。對稱加密的缺點是需要雙方事先約定好并保管好密鑰,否則會導致數據泄露或丟失。對稱加密有兩種模式:分組密碼和流密碼。分組密碼是把明文分成固定長度的塊,然后對每個塊進行加密或解密,生成相同長度的密文或明文。流密碼是把明文分成單個字節,然后對每個字節進行加密或解密,生成單個字節的密文或明文。常見的對稱加密算法有:DES、AES、Blowfish 等。B9e28資訊網——每日最新資訊28at.com

1.AES(高級加密標準):

AES 只有一個密鑰,這個密鑰既用來加密,也用于解密,AES 加密方式有五種:ECB, CBC, CTR, CFB, OFB。B9e28資訊網——每日最新資訊28at.com

從安全性角度推薦 CBC 加密方法,本文介紹了 CBC,ECB 兩種加密方法的 python 實現。B9e28資訊網——每日最新資訊28at.com

CBC 和 ECB 模式的區別就是:B9e28資訊網——每日最新資訊28at.com

  • CBC 加密需要一個十六位的 key(密鑰)和一個十六位 iv(偏移量)
  • ECB 加密不需要 iv,只需要 key(密鑰)
class DoAES: """ AES 加密 """ def __init__(self, key):  self.key = key  # 將密鑰轉換為字符型數據  self.mode = AES.MODE_ECB  # 操作模式選擇ECB def encrypt(self, text):  """加密函數"""  file_aes = AES.new(self.key, self.mode)  # 創建AES加密對象  text = text.encode('utf-8')  # 明文必須編碼成字節流數據,即數據類型為bytes  while len(text) % 16 != 0:  # 對字節型數據進行長度判斷   text += b'/x00'  # 如果字節型數據長度不是16倍整數就進行補充  en_text = file_aes.encrypt(text)  # 明文進行加密,返回加密后的字節流數據  return str(base64.b64encode(en_text), encoding='utf-8')  # 將加密后得到的字節流數據進行base64編碼并再轉換為unicode類型 def decrypt(self, text):  """解密函數"""  file_aes = AES.new(self.key, self.mode)  text = bytes(text, encoding='utf-8')  # 將密文轉換為bytes,此時的密文還是由basen64編碼過的  text = base64.b64decode(text)  # 對密文再進行base64解碼  de_text = file_aes.decrypt(text)  # 密文進行解密,返回明文的bytes  return str(de_text, encoding='utf-8').strip()  # 將解密后得到的bytes型數據轉換為str型,并去除末尾的填充if __name__ == '__main__': # key = os.urandom(16)   #隨即產生n個字節的字符串,可以作為隨機加密key使用 key = '2l4LoWczlWxlMZJAAp5N0g6EygZZd9C6'  # 隨即產生n個字節的字符串,可以作為隨機加密key使用 text = '4534'  # 需要加密的內容 aes_test = DoAES(key.encode('utf-8')) cipher_text = aes_test.encrypt(text) init_text = aes_test.decrypt(cipher_text) print('加密后:' + cipher_text) print('解密后:' + init_text)

輸出結果:B9e28資訊網——每日最新資訊28at.com

加密后:blhiuFNLSqBUMMDbWxUBBw==解密后:4534進程已結束,退出代碼0

2.DES 示例:

class Des:    def __init__(self, text):        self.text = text  # 原始字符串        self.KEY = '2l4LoWcz'  # 這個key是固定問開發,        # self.KEY  = os.urandom(8)  # 隨即產生n個字節的字符串,可以作為隨機加密key使用    def des_encrypt(self):        """DES 加密        Returns:加密后字符串,16進制        """        secret_key = self.KEY  # 密碼        iv = secret_key  # 偏移        # secret_key:加密密鑰,CBC:加密模式,iv:偏移, padmode:填充        des_obj = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)        # 返回為字節        secret_bytes = des_obj.encrypt(self.text.encode("utf-8"), padmode=PAD_PKCS5)        # 返回為16進制        return binascii.b2a_hex(secret_bytes)    def des_decrypt(self):        """        DES 解密        Returns:解密后的字符串        """        secret_key = self.KEY        iv = secret_key        des_obj = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)        decrypt_str = des_obj.decrypt(binascii.a2b_hex(self.text), padmode=PAD_PKCS5)        return bytes.decode(decrypt_str)  # bytes.decode() 將bit轉為str

測試數據:B9e28資訊網——每日最新資訊28at.com

if __name__ == '__main__':    text = 'TestingPlayer:測試玩家勇哥'  # 需要加密的內容    d_encrypt = Des(text)    cipher_text = d_encrypt.des_encrypt()    d_decrypt = Des(cipher_text)    init_text = d_decrypt.des_decrypt()    print('加密后:', cipher_text)    print('解密后:', init_text)

執行結果:B9e28資訊網——每日最新資訊28at.com

加密后:b'6a7e6bf7f34fcf0c4024e49b110cb6fe7924026e4c0477e5563599123358a3026ef1e81fd7445cb2'解密后:TestingPlayer:測試玩家勇哥

非對稱加密

非對稱加密也叫做公鑰加密,是一種使用不同的兩個密鑰來進行數據加密和解密的方法。這兩個密鑰分別叫做公鑰和私鑰,它們之間有數學上的關聯,但不能相互推導。公鑰是公開的,可以用來給數據進行加密或驗證簽名;私鑰是保密的,可以用來給數據進行解密或生成簽名。非對稱加密的優點是安全性高,不需要雙方事先約定好并傳輸秘鑰。非對稱加密的缺點是速度慢,適合加密少量的數據。常見的非對稱加密算法有:RSA、DSA、ECC 等。B9e28資訊網——每日最新資訊28at.com

1.RSA(羅納德·李維斯特·沙米爾·阿迪曼):

# 導入cryptography庫中的rsa模塊from cryptography.hazmat.primitives.asymmetric import rsa# 生成一對公鑰和私鑰,長度為2048位private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)public_key = private_key.public_key()print("私鑰:", private_key)print("公鑰:", public_key)# 定義一個明文字符串plaintext = "Hello, world!"# 使用公鑰對明文進行加密,得到一個字節串類型的密文ciphertext = public_key.encrypt(plaintext.encode(), rsa.OAEP(mgf=rsa.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))print("密文:", ciphertext)# 使用私鑰對密文進行解密,得到一個字節串類型的明文decrypted = private_key.decrypt(ciphertext, rsa.OAEP(mgf=rsa.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))print("解密后的明文:", decrypted.decode())

輸出結果:B9e28資訊網——每日最新資訊28at.com

私鑰: <cryptography.hazmat.backends.openssl.rsa._RSAPrivateKey object at 0x7f9a6a0f4d90>公鑰: <cryptography.hazmat.backends.openssl.rsa._RSAPublicKey object at 0x7f9a6a0f4d60>密文: b'/x8b/x9e/x1e/x1b/x8f/x9d/x1e/x8b/x9c/x9f/x1f/x8b/x9d/x1e/x8b/x9c/x9f/x1f/x8b/x9d/x1e/x8b/x9c/x9f/x1f/x8b/x9d/x1e/x8b/x9c/x9f/x1f/xb3/xe2/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xe3/xc5/xd2/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xf7/xf6/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xb4/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0/xa0'解密后的明文: Hello, world!

2.RAS 封裝:

class Rsa: def __init__(self, st: str):  self.st = st # rsa加密 def rsa_encrypt(self):  # 生成公鑰、私鑰  (pubkey, privkey) = rsa.newkeys(1024)  print("公鑰: ", pubkey)  print("私鑰: ", privkey)  # 明文編碼格式  content = self.st.encode('utf-8')  # 公鑰加密  crypto = rsa.encrypt(content, pubkey)  # # 一般加密的密文會以base64編碼的方式輸出  b_res = base64.b64encode(crypto).decode()  return b_res, privkey # rsa解密 def rsa_decrypt(self, pk):  # 私鑰解密  st = base64.b64decode(self.st.encode())  content = rsa.decrypt(st, pk)  con = content.decode('utf-8')  return con

本文鏈接:http://m.www897cc.com/showinfo-26-10434-0.htmlPython數據加密:抄起來,壞人都瞎了眼

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 2023年需求最大的八種編程語言

下一篇: 提升代碼效率:掌握Python中并行for循環從入門到精通

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
在线免费高清一区二区三区| 久久久久久午夜| 亚洲国产精品一区二区www在线| 国产精品毛片在线看| 欧美视频在线观看一区| 国产伦精品免费视频| 一色屋精品视频在线观看网站| 永久久久久久| 99在线精品视频| 香蕉乱码成人久久天堂爱免费| 香蕉久久一区二区不卡无毒影院| 久久裸体视频| 欧美日韩国产丝袜另类| 国产亚洲人成a一在线v站| 亚洲二区精品| 亚洲欧美日产图| 麻豆9191精品国产| 国产精品超碰97尤物18| 国内精品视频在线观看| 99re热精品| 久久精品国亚洲| 欧美日本国产视频| 国产午夜精品久久久| 亚洲精品社区| 欧美一区国产在线| 欧美剧在线免费观看网站| 国产美女一区二区| 91久久精品视频| 先锋影音久久久| 欧美精品aa| 国产主播一区二区| 国产精品99久久久久久久久| 久久人体大胆视频| 国产精品免费看片| 亚洲美女尤物影院| 久久久噜噜噜久久人人看| 欧美午夜精品久久久久久久 | 欧美激情网友自拍| 国产女主播一区二区三区| 亚洲久久一区二区| 久久久久在线观看| 国产精品爽爽爽| 日韩一区二区精品在线观看| 久久天天躁狠狠躁夜夜av| 国产精品久久久久久久午夜片| 尤物yw午夜国产精品视频明星 | 久久久xxx| 国产精品久久久久久久久久久久久久 | 美女亚洲精品| 国产精品美女www爽爽爽视频| 国产一区二区三区成人欧美日韩在线观看 | 久久综合九色综合欧美狠狠| 欧美日韩综合另类| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧美另类国产| 欧美日韩视频在线第一区| 亚洲二区在线观看| 久久久欧美一区二区| 国产乱子伦一区二区三区国色天香| 亚洲日本va午夜在线影院| 久久亚洲春色中文字幕| 国产午夜精品美女视频明星a级| 日韩视频一区二区三区在线播放| 久久精品欧美日韩| 国产性天天综合网| 欧美夜福利tv在线| 国产精品久久久久国产a级| 99国产一区| 欧美另类99xxxxx| 亚洲精品裸体| 欧美精品一区三区在线观看| 亚洲人成绝费网站色www| 美女主播一区| 1024成人网色www| 久久综合久久综合这里只有精品 | 影音先锋日韩有码| 久久躁狠狠躁夜夜爽| 在线观看亚洲精品视频| 久久综合精品国产一区二区三区| 国产一区二区三区av电影| 欧美一区二区三区四区在线 | 久久久噜噜噜久久中文字幕色伊伊| 国产麻豆91精品| 欧美一级片在线播放| 国产区日韩欧美| 欧美诱惑福利视频| 国产一级揄自揄精品视频| 欧美在线精品免播放器视频| 国产亚洲福利社区一区| 久久激情网站| 一区视频在线播放| 欧美粗暴jizz性欧美20| 亚洲免费福利视频| 欧美日韩在线一区二区| 亚洲永久在线| 国产一区二区按摩在线观看| 久久久噜噜噜久久狠狠50岁| 亚洲国产精品久久精品怡红院| 久久视频一区| 亚洲人永久免费| 欧美色播在线播放| 午夜国产欧美理论在线播放 | 一区二区视频免费在线观看| 免费不卡在线视频| 亚洲六月丁香色婷婷综合久久| 欧美精品18| 亚洲一区二区三区在线看| 国产日韩欧美制服另类| 久久久精品网| 亚洲精品日韩精品| 国产精品video| 久久精品国产成人| 亚洲国产免费| 国产精品xnxxcom| 久久激情婷婷| 亚洲精品久久久久久久久久久久久| 欧美日韩国产一区| 午夜一级久久| 亚洲高清视频中文字幕| 欧美日韩一区二区三区免费看 | 在线亚洲一区| 国产日韩在线视频| 欧美电影在线观看完整版| 亚洲夜晚福利在线观看| 国产日韩一区二区三区在线播放| 久久中文久久字幕| 一区二区三区成人精品| 国产综合第一页| 欧美欧美全黄| 久久福利精品| 日韩一级在线| 国产一区二区三区四区三区四| 美女国产一区| 亚洲一二三区视频在线观看| 精品动漫3d一区二区三区免费版| 欧美高清在线| 欧美一区二区视频观看视频| 亚洲日本va在线观看| 国产欧美日韩精品一区| 欧美另类在线播放| 久久国产精品一区二区| 亚洲另类黄色| 国产欧美精品va在线观看| 欧美高清免费| 欧美中文字幕| 中文国产成人精品久久一| 在线观看视频亚洲| 国产精品一区二区久久国产| 欧美—级a级欧美特级ar全黄| 午夜在线一区二区| 日韩视频在线一区二区| 激情欧美日韩| 国产精品网站视频| 欧美精品在线免费| 久久久噜噜噜| 午夜精品美女自拍福到在线| 亚洲开发第一视频在线播放| 在线免费不卡视频| 国产一区二区三区四区五区美女| 欧美日韩三级| 免费一区二区三区| 久久精品一区蜜桃臀影院| 亚洲一区一卡| 日韩亚洲欧美中文三级| 影院欧美亚洲| 国外精品视频| 国产日韩精品一区二区浪潮av| 欧美精品久久一区二区| 麻豆视频一区二区| 久久久91精品国产一区二区精品| 亚洲视频精品| 亚洲精品国产拍免费91在线| 在线电影国产精品| 国产原创一区二区| 国产偷久久久精品专区| 国产欧美精品一区二区三区介绍| 欧美激情视频一区二区三区不卡| 久久成人国产| 午夜精品久久久久久久99水蜜桃| 日韩一级精品视频在线观看| 亚洲国产合集| 在线观看91久久久久久| 国产一区视频网站| 国产欧美日韩三区| 国产精品自在线| 国产精品久久久久久久浪潮网站| 欧美福利网址| 免费观看成人www动漫视频| 久久免费视频观看| 久久久久久久久久久久久女国产乱| 亚洲欧美视频在线观看视频| 一区二区三区高清不卡| 99v久久综合狠狠综合久久| 亚洲人午夜精品免费| 亚洲剧情一区二区| 亚洲巨乳在线| 亚洲免费不卡| 99视频日韩| 夜夜嗨一区二区三区| av不卡在线| 亚洲调教视频在线观看| 亚洲一二三级电影| 亚洲欧美日韩电影| 亚洲欧美日韩专区|