Python加密解密技術 Python常見加密算法實現解析

python 實現加密的方法包括:1. 哈希加密使用 md5 和 sha 系列生成數據指紋,推薦 sha-256 或以上版本;2. 對稱加密使用 aes,適合加密大量數據,需注意模式選擇和密鑰保密;3. 非對稱加密使用 rsa,用于身份認證和數字簽名,結合對稱加密提升效率;4. 實際應用建議加 salt 使用慢哈希存儲密碼、注意編碼處理、加強密鑰管理并依賴成熟庫,確保正確設計邏輯以保障系統安全。

Python加密解密技術 Python常見加密算法實現解析

加密和解密在數據安全中非常重要,尤其是在網絡通信、用戶密碼存儲等場景下。python 提供了多種方式來實現常見的加密算法,比如 MD5、SHA 系列、AES 和 RSA 等。如果你需要用到這些技術,下面是一些實用的實現方法和注意事項。


一、哈希加密:MD5 和 SHA 系列

哈希算法常用于生成數據的“指紋”,比如用戶密碼不能直接存儲明文,通常會用哈希處理后再保存。

  • MD5:速度快但安全性較低,適合校驗數據完整性。
  • SHA-1 / SHA-256 / SHA-512:安全性更高,推薦使用 SHA-256 或以上。
import hashlib  # MD5 示例 hash_obj = hashlib.md5() hash_obj.update(b"hello world") print(hash_obj.hexdigest())  # SHA256 示例 hash_obj = hashlib.sha256() hash_obj.update(b"hello world") print(hash_obj.hexdigest())

注意:哈希是單向的,不能逆向還原原始內容。如果要驗證密碼是否一致,只能對輸入值重新哈希再比對結果。


二、對稱加密:AES 加密與解密

對稱加密指的是加密和解密使用同一個密鑰,常見的是 AES(高級加密標準),適合加密大量數據。

立即學習Python免費學習筆記(深入)”;

Python 中可以使用 pycryptodome 庫來實現:

pip install pycryptodome

示例代碼如下:

from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad  key = get_random_bytes(16)  # 16字節即AES-128 cipher = AES.new(key, AES.MODE_CBC)  data = b"這是一個測試字符串" ct_bytes = cipher.encrypt(pad(data, AES.block_size))  # 解密 cipher_dec = AES.new(key, AES.MODE_CBC, cipher.iv) pt = unpad(cipher_dec.decrypt(ct_bytes), AES.block_size) print(pt)

幾個要點:

  • 模式選擇 CBC 或 GCM 更加安全;
  • 密鑰必須保密,同時 IV(初始化向量)可以公開,但每次加密應不同;
  • 數據長度不是塊大小的整數倍時需要填充。

三、非對稱加密:RSA 加密與簽名

非對稱加密使用公鑰加密、私鑰解密,常用于身份認證和數字簽名。

可以用 cryptography 庫實現:

pip install cryptography

生成密鑰對并加密示例:

from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import hashes, serialization  private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) public_key = private_key.public_key()  # 公鑰加密 encrypted = public_key.encrypt(     b"secret message",     padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None) )  # 私鑰解密 decrypted = private_key.decrypt(     encrypted,     padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None) )  print(decrypted)

常見用途:

  • 數字簽名:私鑰簽名,公鑰驗證;
  • 安全傳輸:加密小段數據,如對稱密鑰;
  • 不適合直接加密大文件,一般結合對稱加密使用。

四、實際應用中的幾個建議

  • 密碼存儲不要只靠哈希,應該加上 salt 并使用 PBKDF2、bcrypt 或 scrypt 等慢哈希算法。
  • 加密前后數據編碼要注意,比如 UTF-8 編碼和 Base64 處理。
  • 密鑰管理很關鍵,特別是對稱加密中密鑰一旦泄露,數據就完全暴露。
  • 使用成熟的庫而不是自己造輪子,因為密碼學細節非常容易出錯。

總的來說,Python 實現加密并不難,但真正難點在于如何正確使用這些算法,并確保整體系統的安全性。很多問題不是代碼寫錯了,而是設計邏輯或使用方式不對。基本上就這些,理解原理 + 正確調用庫函數就能滿足大部分需求。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享