欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python crypto包功能的使用解讀

 更新時(shí)間:2025年09月21日 16:09:55   作者:追逐此刻  
文章概述了Python中常用的加密庫(kù)(如cryptography、pycryptodome、hashlib、bcrypt)及其用途,強(qiáng)調(diào)選擇合適工具的重要性,并指出安全實(shí)踐如避免MD5/SHA-1、妥善保管密鑰等關(guān)鍵注意事項(xiàng)

在Python中,crypto相關(guān)的包通常用于加密、解密、哈希和其他密碼學(xué)操作。以下是幾個(gè)常見(jiàn)的與crypto相關(guān)的Python包及其作用:

1. 什么是“加密”???

加密就像把一封信放進(jìn)一個(gè)帶鎖的盒子里,只有有鑰匙的人才能打開(kāi)看。在計(jì)算機(jī)里,加密的作用是:

  • ?保護(hù)隱私?:比如你的密碼、銀行卡號(hào)不能讓別人看到。
  • ?防止篡改?:比如下載的文件不能被壞人偷偷修改。
  • ?安全通信?:比如微信聊天內(nèi)容不會(huì)被黑客偷看。

Python 的 crypto 相關(guān)包就是用來(lái)做這些事情的!

?2. Python 常用的加密包?

??(1)cryptography(最推薦)??

?作用?:一個(gè)超級(jí)安全的工具箱,可以做各種加密操作。

?能干什么???

  • ?加密/解密?:比如用密碼鎖住文件,只有知道密碼的人能打開(kāi)。
  • ?數(shù)字簽名?:比如你寫了一份合同,用你的“簽名”證明是你寫的,別人不能偽造。
  • ?生成安全密碼?:比如自動(dòng)生成一個(gè)超級(jí)復(fù)雜的密碼,黑客猜不到。

?示例?(加密一段文字):

from cryptography.fernet import Fernet

# 生成一個(gè)鑰匙(必須保存好,丟了就打不開(kāi)了!)
key = Fernet.generate_key()

# 用鑰匙創(chuàng)建一個(gè)“鎖”
cipher = Fernet(key)

# 加密一段文字(比如"Hello")
encrypted = cipher.encrypt(b"Hello")

# 解密
decrypted = cipher.decrypt(encrypted)
print(decrypted)  # 輸出 b"Hello"

??(2)pycryptodome(功能強(qiáng)大)??

?作用?:比 cryptography 更底層,支持更多加密算法。

?能干什么???

  • ?AES加密?(銀行級(jí)加密,比如支付寶用的就是這種)。
  • ?RSA加密?(比如網(wǎng)站用 HTTPS 保護(hù)你的密碼)。
  • ?計(jì)算文件的哈希值?(比如下載軟件時(shí)檢查文件是否被篡改)。

?示例?(用 AES 加密):

from Crypto.Cipher import AES

# 鑰匙必須是16字節(jié)(比如 b'16-byte-key-12345')
key = b'16-byte-key-12345'

# 創(chuàng)建一個(gè)加密器
cipher = AES.new(key, AES.MODE_EAX)

# 加密數(shù)據(jù)
data = b"Secret Message"
ciphertext, tag = cipher.encrypt_and_digest(data)

# 解密
cipher = AES.new(key, AES.MODE_EAX, cipher.nonce)
decrypted = cipher.decrypt_and_verify(ciphertext, tag)
print(decrypted)  # 輸出 b"Secret Message"

??(3)hashlib(Python 自帶,計(jì)算哈希)??

?作用?:計(jì)算“指紋”(哈希值),用來(lái)驗(yàn)證數(shù)據(jù)是否被修改。

?能干什么???

  • ?檢查密碼?:比如你注冊(cè)時(shí)輸入的密碼會(huì)被轉(zhuǎn)換成哈希值存儲(chǔ),下次登錄時(shí)對(duì)比哈希值,而不是直接存密碼。
  • ?驗(yàn)證文件?:比如下載一個(gè)軟件,計(jì)算它的哈希值,確保沒(méi)被病毒修改。

?示例?(計(jì)算 SHA-256 哈希值):

import hashlib

# 計(jì)算 "Hello" 的哈希值
hash_obj = hashlib.sha256(b"Hello")

# 得到哈希值(一串固定長(zhǎng)度的字母數(shù)字)
print(hash_obj.hexdigest())
# 輸出:185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

?注意?:哈希是單向的,不能反向解密(不像前面的加密可以解密)。

??(4)bcrypt(專門存密碼)??

?作用?:安全存儲(chǔ)用戶密碼,防止黑客破解。

?為什么不用普通哈希???

  • 普通哈希(如 SHA-256)計(jì)算太快,黑客可以暴力.破解。
  • bcrypt 會(huì)故意變慢,讓黑客破解更難。

?示例?(存儲(chǔ)和驗(yàn)證密碼):

import bcrypt

# 1. 用戶注冊(cè)時(shí),哈希密碼
password = b"my_password"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())  # 加鹽(更安全)

# 2. 用戶登錄時(shí),檢查密碼
input_password = b"my_password"
if bcrypt.checkpw(input_password, hashed):
    print("密碼正確!")
else:
    print("密碼錯(cuò)誤!")

?3. 什么時(shí)候用哪個(gè)包???

?你要做什么????用哪個(gè)包???
加密/解密數(shù)據(jù)(如文件)cryptography 或 pycryptodome
存儲(chǔ)用戶密碼bcrypt
計(jì)算哈希值(如校驗(yàn)文件)hashlib
網(wǎng)絡(luò)加密(如 HTTPS)ssl(Python 自帶)

?4. 注意事項(xiàng)(超級(jí)重要?。??

  1. ?不要自己發(fā)明加密算法?!用現(xiàn)成的庫(kù)(如 cryptography),自己寫的很容易被破解。
  2. ?密鑰(密碼)要保管好?!如果別人拿到你的密鑰,就能解密你的數(shù)據(jù)。
  3. ?不要用 MD5/SHA-1?!它們已經(jīng)不安全了,推薦用 SHA-256 或 bcrypt。
  4. ?加密不是萬(wàn)能的?!如果電腦有病毒,加密也可能被破解。

?5. 總結(jié)?

  • ?加密? = 把數(shù)據(jù)變成亂碼,只有有鑰匙的人能還原。
  • ?哈希? = 計(jì)算數(shù)據(jù)的“指紋”,用來(lái)驗(yàn)證是否被修改。
  • Python 的 crypto 包(如 cryptography、pycryptodome、hashlib)就是干這些事的!
  • ?存儲(chǔ)密碼用 bcrypt,加密數(shù)據(jù)用 cryptography,計(jì)算哈希用 hashlib

1. ?cryptography

?作用?:一個(gè)現(xiàn)代、安全的密碼學(xué)庫(kù),提供高級(jí)和低級(jí)接口。

?功能?:

  • 對(duì)稱加密(如AES)
  • 非對(duì)稱加密(如RSA、ECC)
  • 哈希(如SHA-256)
  • 數(shù)字簽名
  • 密鑰生成與管理

?示例?:

from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher = Fernet(key)
encrypted = cipher.encrypt(b"Hello, World!")
decrypted = cipher.decrypt(encrypted)

2.?pycryptodome/pycryptodomex

?作用?:PyCrypto的替代品,支持廣泛的密碼學(xué)算法。

?功能?:

  • 對(duì)稱加密(AES、DES、ChaCha20)
  • 非對(duì)稱加密(RSA、DSA)
  • 哈希(SHA、MD5)
  • 隨機(jī)數(shù)生成
  • 數(shù)字簽名

?示例?:

from Crypto.Cipher import AES
key = b'16-byte-key-12345'
cipher = AES.new(key, AES.MODE_EAX)
data = b"Secret message"
ciphertext, tag = cipher.encrypt_and_digest(data)

3. ?hashlib(Python標(biāo)準(zhǔn)庫(kù))?

?作用?:提供常見(jiàn)的哈希算法(如SHA-1、SHA-256、MD5)。

?示例?:

import hashlib
hash_obj = hashlib.sha256(b"Hello")
print(hash_obj.hexdigest())

4. ?ssl(Python標(biāo)準(zhǔn)庫(kù))?

?作用?:用于TLS/SSL加密通信(如HTTPS)。

?功能?:

  • 證書驗(yàn)證
  • 安全套接字通信

?示例?:

import ssl
context = ssl.create_default_context()

5.bcrypt

?作用?:專為密碼哈希設(shè)計(jì)的庫(kù)(抗暴力.破解)。

?示例?:

import bcrypt
password = b"super-secret"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())

6. ?paramiko(SSH相關(guān))?

?作用?:實(shí)現(xiàn)SSH協(xié)議,用于加密的遠(yuǎn)程連接。

?功能?:

  • SSH客戶端/服務(wù)器
  • SFTP文件傳輸

注意事項(xiàng)

  1. ?安全性?:避免使用已棄用的庫(kù)(如pycrypto),優(yōu)先選擇cryptographypycryptodome。
  2. ?哈希算法?:MD5和SHA-1已不安全,推薦SHA-256或bcrypt。
  3. ?密鑰管理?:密鑰應(yīng)通過(guò)安全方式(如環(huán)境變量)存儲(chǔ),而非硬編碼。

總結(jié)

  • ?通用加密?:cryptographypycryptodome。
  • ?密碼哈希?:bcryptargon2
  • ?簡(jiǎn)單哈希?:hashlib。
  • ?網(wǎng)絡(luò)加密?:sslparamiko。

根據(jù)需求選擇合適的工具,并始終遵循最佳安全實(shí)踐!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文教你學(xué)會(huì)使用Python中的多處理模塊

    一文教你學(xué)會(huì)使用Python中的多處理模塊

    Python?多處理模塊是一個(gè)強(qiáng)大的工具,用于實(shí)現(xiàn)并行處理,提高程序的性能和效率,本文將詳細(xì)介紹?Python?中多處理模塊的使用方法,希望對(duì)大家有所幫助
    2024-01-01
  • python3中numpy函數(shù)tile的用法詳解

    python3中numpy函數(shù)tile的用法詳解

    今天小編就為大家分享一篇python3中numpy函數(shù)tile的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python解決No?module?named?pip問(wèn)題兩種方法

    python解決No?module?named?pip問(wèn)題兩種方法

    當(dāng)出現(xiàn)No module named pip錯(cuò)誤時(shí),表明您的Python環(huán)境缺少pip模塊,下面這篇文章主要給大家介紹了關(guān)于python解決No?module?named?pip問(wèn)題的兩種方法,需要的朋友可以參考下
    2024-01-01
  • 在Python中使用模塊的教程

    在Python中使用模塊的教程

    這篇文章主要介紹了在Python中使用模塊的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解

    Python Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解

    Pandas是python的一個(gè)數(shù)據(jù)分析包,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。本文將通過(guò)示例詳細(xì)為大家介紹一下Pandas的數(shù)據(jù)離散化與合并,需要的可以參考一下
    2022-02-02
  • Python參數(shù)的傳遞幾種情況實(shí)例詳解

    Python參數(shù)的傳遞幾種情況實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于Python參數(shù)的傳遞的相關(guān)資料,在Python中傳遞參數(shù)指的是函數(shù)或方法中的參數(shù)傳輸方式,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-09-09
  • python 基于opencv實(shí)現(xiàn)圖像增強(qiáng)

    python 基于opencv實(shí)現(xiàn)圖像增強(qiáng)

    這篇文章主要介紹了python 基于opencv實(shí)現(xiàn)圖像增強(qiáng)的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 對(duì)于Python編程中一些重用與縮減的建議

    對(duì)于Python編程中一些重用與縮減的建議

    這篇文章主要介紹了對(duì)于Python編程中一些重用與縮減的建議,來(lái)自于IBM官方技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python傳統(tǒng)圖像處理之皮膚區(qū)域檢測(cè)詳解

    Python傳統(tǒng)圖像處理之皮膚區(qū)域檢測(cè)詳解

    這篇文章主要介紹了在不同情景下對(duì)傳統(tǒng)圖像進(jìn)行皮膚區(qū)域檢測(cè),文章中的代碼具有一定的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起來(lái)學(xué)習(xí)學(xué)習(xí)
    2021-12-12
  • Python從零打造高安全密碼管理器

    Python從零打造高安全密碼管理器

    在數(shù)字化時(shí)代,每人平均需要管理近百個(gè)賬號(hào)密碼,本文將帶大家深入剖析一個(gè)基于Python的高安全性密碼管理器實(shí)現(xiàn)方案,感興趣的小伙伴可以參考一下
    2025-04-04

最新評(píng)論