Pythoncrypto包功能的使用解读

Written by

in

文章目录
  • 加密就像把一封信放进一个带锁的盒子里,只有有钥匙的人才能打开看。在计算机里,加密的作用是: ​保护隐私​:比如你的密码、银行卡号不能让别人看到。 ​防止篡改​:比如下载的文件不能被坏人偷偷修改。 ​安全通信​:比如微信聊天内容不会被黑客偷看。 Python 的 crypto 相关包就是用来做这些事情的!
  • ​你要做什么?​​ ​用哪个包?​​ 加密/解密数据(如文件) cryptography 或 pycryptodome 存储用户密码 bcrypt 计算哈希值(如校验文件) hashlib 网络加密(如 HTTPS) ssl(Python 自带)
  • ​不要自己发明加密算法​!用现成的库(如 cryptography),自己写的很容易被破解。 ​密钥(密码)要保管好​!如果别人拿到你的密钥,就能解密你的数据。 ​不要用 MD5/SHA-1​!它们已经不安全了,推荐用 SHA-256 或 bcrypt。 ​加密不是万能的​!如果电脑有病毒,加密也可能被破解。
  • ​加密​ = 把数据变成乱码,只有有钥匙的人能还原。 ​哈希​ = 计算数据的“指纹”,用来验证是否被修改。 Python 的 crypto 包(如 cryptography、pycryptodome、hashlib)就是干这些事的! ​存储密码用 bcrypt,加密数据用 cryptography,计算哈希用 hashlib。
  • ​通用加密​:cryptography或pycryptodome。 ​密码哈希​:bcrypt或argon2。 ​简单哈希​:hashlib。 ​网络加密​:ssl或paramiko。 根据需求选择合适的工具,并始终遵循最佳安全实践! 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: python中cryptography库的实现 深入理解Python密码学之使用PyCrypto库进行加密和解密 Python PyCryptodome库介绍与实例教程 解决Python报错No module named Crypto问题 python执行js脚本报错CryptoJS is not defined问题 Python中Cryptography库实现加密解密 Python pycryptodome库实现RSA加密解密消息
  • 目录
    • 1. 什么是“加密”?​​
    • ​2. Python 常用的加密包​
      • ​​(1)cryptography(最推荐)​​
      • ​​(2)pycryptodome(功能强大)​​
      • ​​(3)hashlib(Python 自带,计算哈希)​​
      • ​​(4)bcrypt(专门存密码)​​
    • ​3. 什么时候用哪个包?​​
      • ​4. 注意事项(超级重要!)​​
        • ​5. 总结​
          • 1. ​cryptography
          • 2.​pycryptodome/pycryptodomex
          • 3. ​hashlib(Python标准库)​
          • 4. ​ssl(Python标准库)​
          • 5.bcrypt
          • 6. ​paramiko(SSH相关)​
          • 注意事项
        • 总结

          在Python中,crypto相关的包通常用于加密、解密、哈希和其他密码学操作。以下是几个常见的与crypto相关的Python包及其作用:

          加密就像把一封信放进一个带锁的盒子里,只有有钥匙的人才能打开看。在计算机里,加密的作用是:

          • 保护隐私​:比如你的密码、银行卡号不能让别人看到。
          • 防止篡改​:比如下载的文件不能被坏人偷偷修改。
          • 安全通信​:比如微信聊天内容不会被黑客偷看。

          Python 的 crypto 相关包就是用来做这些事情的!

          作用​:一个超级安全的工具箱,可以做各种加密操作。

          能干什么?​

          • 加密/解密​:比如用密码锁住文件,只有知道密码的人能打开。
          • 数字签名​:比如你写了一份合同,用你的“签名”证明是你写的,别人不能伪造。
          • 生成安全密码​:比如自动生成一个超级复杂的密码,黑客猜不到。

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

          from cryptography.fernet import Fernet
          
          # 生成一个钥匙(必须保存好,丢了就打不开了!)
          key = Fernet.generate_key()
          
          # 用钥匙创建一个“锁”
          cipher = Fernet(key)
          
          # 加密一段文字(比如"Hello")
          encrypted = cipher.encrypt(b"Hello")
          
          # 解密
          decrypted = cipher.decrypt(encrypted)
          print(decrypted)  # 输出 b"Hello"

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

          能干什么?​

          • AES加密​(银行级加密,比如支付宝用的就是这种)。
          • RSA加密​(比如网站用 HTTPS 保护你的密码)。
          • 计算文件的哈希值​(比如下载软件时检查文件是否被篡改)。

          示例​(用 AES 加密):

          from Crypto.Cipher import AES
          
          # 钥匙必须是16字节(比如 b'16-byte-key-12345')
          key = b'16-byte-key-12345'
          
          # 创建一个加密器
          cipher = AES.new(key, AES.MODE_EAX)
          
          # 加密数据
          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"

          作用​:计算“指纹”(哈希值),用来验证数据是否被修改。

          能干什么?​

          • 检查密码​:比如你注册时输入的密码会被转换成哈希值存储,下次登录时对比哈希值,而不是直接存密码。
          • 验证文件​:比如下载一个软件,计算它的哈希值,确保没被病毒修改。

          示例​(计算 SHA-256 哈希值):

          import hashlib
          
          # 计算 "Hello" 的哈希值
          hash_obj = hashlib.sha256(b"Hello")
          
          # 得到哈希值(一串固定长度的字母数字)
          print(hash_obj.hexdigest())
          # 输出:185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

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

          作用​:安全存储用户密码,防止黑客破解。

          为什么不用普通哈希?​

          • 普通哈希(如 SHA-256)计算太快,黑客可以暴力.破解。
          • bcrypt 会故意变慢,让黑客破解更难。

          示例​(存储和验证密码):

          import bcrypt
          
          # 1. 用户注册时,哈希密码
          password = b"my_password"
          hashed = bcrypt.hashpw(password, bcrypt.gensalt())  # 加盐(更安全)
          
          # 2. 用户登录时,检查密码
          input_password = b"my_password"
          if bcrypt.checkpw(input_password, hashed):
              print("密码正确!")
          else:
              print("密码错误!")

          ​你要做什么?​​ ​用哪个包?​​
          加密/解密数据(如文件) cryptography 或 pycryptodome
          存储用户密码 bcrypt
          计算哈希值(如校验文件) hashlib
          网络加密(如 HTTPS) ssl(Python 自带)

          1. 不要自己发明加密算法​!用现成的库(如 cryptography),自己写的很容易被破解。
          2. 密钥(密码)要保管好​!如果别人拿到你的密钥,就能解密你的数据。
          3. 不要用 MD5/SHA-1​!它们已经不安全了,推荐用 SHA-256 或 bcrypt
          4. 加密不是万能的​!如果电脑有病毒,加密也可能被破解。

          • 加密​ = 把数据变成乱码,只有有钥匙的人能还原。
          • 哈希​ = 计算数据的“指纹”,用来验证是否被修改。
          • Python 的 crypto 包(如 cryptographypycryptodomehashlib)就是干这些事的!
          • 存储密码用 bcrypt,加密数据用 cryptography,计算哈希用 hashlib

          作用​:一个现代、安全的密码学库,提供高级和低级接口。

          功能​:

          • 对称加密(如AES)
          • 非对称加密(如RSA、ECC)
          • 哈希(如SHA-256)
          • 数字签名
          • 密钥生成与管理

          示例​:

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

          作用​:PyCrypto的替代品,支持广泛的密码学算法。

          功能​:

          • 对称加密(AES、DES、ChaCha20)
          • 非对称加密(RSA、DSA)
          • 哈希(SHA、MD5)
          • 随机数生成
          • 数字签名

          示例​:

          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)

          作用​:提供常见的哈希算法(如SHA-1、SHA-256、MD5)。

          示例​:

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

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

          功能​:

          • 证书验证
          • 安全套接字通信

          示例​:

          import ssl
          context = ssl.create_default_context()

          作用​:专为密码哈希设计的库(抗暴力.破解)。

          示例​:

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

          作用​:实现SSH协议,用于加密的远程连接。

          功能​:

          • SSH客户端/服务器
          • SFTP文件传输

          1. 安全性​:避免使用已弃用的库(如pycrypto),优先选择cryptographypycryptodome
          2. 哈希算法​:MD5和SHA-1已不安全,推荐SHA-256或bcrypt。
          3. 密钥管理​:密钥应通过安全方式(如环境变量)存储,而非硬编码。

          • 通用加密​:cryptographypycryptodome
          • 密码哈希​:bcryptargon2
          • 简单哈希​:hashlib
          • 网络加密​:sslparamiko

          根据需求选择合适的工具,并始终遵循最佳安全实践!

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

          您可能感兴趣的文章:

          • python中cryptography库的实现
          • 深入理解Python密码学之使用PyCrypto库进行加密和解密
          • Python PyCryptodome库介绍与实例教程
          • 解决Python报错No module named Crypto问题
          • python执行js脚本报错CryptoJS is not defined问题
          • Python中Cryptography库实现加密解密
          • Python pycryptodome库实现RSA加密解密消息

          站内搜索