当前位置: 首页 > 技术教程

Python常见加密算法怎么实现 常见加密方式的Python实现

  在Python中,实现常见的加密算法可以通过多种方式完成,包括使用内置模块和第三方库。以下是一些常见的加密算法及其Python实现方法:

  1. 对称加密

  对称加密使用相同的密钥进行加密和解密。常见的对称加密算法包括AES、DES和3DES。

  AES加密

  AES(高级加密标准)是一种广泛使用的对称加密算法,支持128位、192位和256位密钥长度。在Python中,可以使用PyCryptodome库来实现AES加密。

  from Crypto.Cipher import AES

  import binascii

  # 密钥和初始化向量

  key = b'this is a 16 key'

  iv = Random.new().read(AES.block_size)

  # 创建AES对象

  cipher = AES.new(key, AES.MODE_CFB, iv)

  # 要加密的数据

  data = '南来北往'

  # 加密数据

  encrypted_data = cipher.encrypt(data.encode())

  # 解密数据

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的数据:', binascii.b2a_hex(encrypted_data))

  print('解密后的数据:', decrypted_data.decode())

  运行

  DES加密

  DES(数据加密标准)是一种较老的对称加密算法,密钥长度为56位。在Python中,可以使用PyCryptodome库来实现DES加密。

  from Crypto.Cipher import DES

  import binascii

  # 密钥

  key = b'abcdefgh'

  # 创建DES对象

  cipher = DES.new(key, DES.MODE_ECB)

  # 要加密的数据

  data = 'python spider!'

  # 加密数据

  encrypted_data = cipher.encrypt(data.encode())

  # 解密数据

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的数据:', binascii.b2a_hex(encrypted_data))

  print('解密后的数据:', decrypted_data.decode())

云服务器13.jpg

  3DES加密

  3DES(三重数据加密算法)是对DES的改进,通过三次DES加密提高安全性。在Python中,可以使用PyCryptodome库来实现3DES加密。

  from Crypto.Cipher import DES3

  import binascii

  # 密钥

  key = b'this is a 16 key'

  # 创建3DES对象

  cipher = DES3.new(key, DES3.MODE_ECB)

  # 要加密的数据

  data = '南来北往'

  # 加密数据

  encrypted_data = cipher.encrypt(data.encode())

  # 解密数据

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的数据:', binascii.b2a_hex(encrypted_data))

  print('解密后的数据:', decrypted_data.decode())

  运行

  2. 非对称加密

  非对称加密使用一对密钥,公钥用于加密,私钥用于解密。常见的非对称加密算法包括RSA和ECC。

  RSA加密

  RSA是一种广泛使用的非对称加密算法,基于大素数乘积的难分解性。在Python中,可以使用rsa库来实现RSA加密。

  import rsa

  # 生成公钥和私钥

  (pubkey, privkey) = rsa.generate_keypair(n_length=1024)

  # 要加密的数据

  data = '南北今天很忙'

  # 加密数据

  encrypted_data = rsa.encrypt(data.encode(), pubkey)

  # 解密数据

  decrypted_data = rsa.decrypt(encrypted_data, privkey)

  print('加密后的数据:', binascii.b2a_hex(encrypted_data))

  print('解密后的数据:', decrypted_data.decode())

  运行

  ECC加密

  ECC(椭圆曲线密码学)是一种基于椭圆曲线数学的非对称加密算法,具有更高的安全性和效率。在Python中,可以使用cryptography库来实现ECC加密。

  from cryptography.hazmat.primitives import hashes

  from cryptography.hazmat.primitives.asymmetric import ec

  from cryptography.hazmat.primitives.asymmetric import padding

  from cryptography.hazmat.primitives import serialization

  # 生成ECC密钥对

  private_key = ec.generate_private_key(ec.SECP256R1())

  public_key = private_key.public_key()

  # 要加密的数据

  data = '南北今天很忙'

  # 加密数据

  encrypted_data = public_key.encrypt(

  data.encode(),

  padding.PKCS1v15()

  )

  # 解密数据

  decrypted_data = private_key.decrypt(

  encrypted_data,

  padding.PKCS1v15()

  )

  print('加密后的数据:', binascii.b2a_hex(encrypted_data))

  print('解密后的数据:', decrypted_data.decode())

  运行

  3. 单向哈希函数

  单向哈希函数将任意长度的数据映射为固定长度的哈希值,常用于数据完整性检查和密码存储。常见的哈希算法包括MD5、SHA1、SHA256等。

  MD5哈希

  MD5是一种较老的哈希算法,生成128位的哈希值。在Python中,可以使用hashlib库来实现MD5哈希。

  import hashlib

  # 要哈希的数据

  data = '这是一个测试'

  # 计算MD5哈希

  hash_object = hashlib.md5(data.encode())

  hex_dig = hash_object.hexdigest()

  print('MD5哈希值:', hex_dig)

  运行

  SHA256哈希

  SHA256是一种更安全的哈希算法,生成256位的哈希值。在Python中,可以使用hashlib库来实现SHA256哈希。

  import hashlib

  # 要哈希的数据

  data = '这是一个测试'

  # 计算SHA256哈希

  hash_object = hashlib.sha256(data.encode())

  hex_dig = hash_object.hexdigest()

  print('SHA256哈希值:', hex_dig)

  运行

  4. Base64编码

  Base64是一种将二进制数据转换为文本的编码方式,常用于数据传输和存储。在Python中,可以使用base64模块来实现Base64编码和解码。

  import base64

  # 要编码的数据

  data = 'hello world'

  # 编码数据

  encoded_data = base64.b64encode(data.encode())

  # 解码数据

  decoded_data = base64.b64decode(encoded_data).decode()

  print('Base64编码后的数据:', encoded_data)

  print('Base64解码后的数据:', decoded_data)

  运行

  5. URL编码

  URL编码是一种将超出ASCII范围的字符转换为带%的十六进制格式的编码方式。在Python中,可以使用urllib.parse模块来实现URL编码和解码。

  from urllib.parse import quote, unquote

  # 要编码的数据

  data = '南北今天很忙'

  # 编码数据

  encoded_data = quote(data)

  # 解码数据

  decoded_data = unquote(encoded_data)

  print('URL编码后的数据:', encoded_data)

  print('URL解码后的数据:', decoded_data)

  运行

  6. HMAC加密

  HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的认证码,用于验证数据的完整性和真实性。在Python中,可以使用hmac库来实现HMAC加密。

  import hmac

  import hashlib

  # 要加密的数据

  data = '这是一个测试'

  # 密钥

  key = b'123456'

  # 计算HMAC

  hmac_object = hmac.new(key, data.encode(), digestmod='sha256')

  hex_dig = hmac_object.hexdigest()

  print('HMAC值:', hex_dig)

  运行

  7. CBC模式

  CBC(Cipher Block Chaining)是一种分组加密模式,通过将前一个块的密文与当前块的明文进行异或操作,提高加密的安全性。在Python中,可以使用PyCryptodome库来实现CBC模式的加密。

  from Crypto.Cipher import AES

  import binascii

  # 密钥和初始化向量

  key = b'this is a 16 key'

  iv = Random.new().read(AES.block_size)

  # 创建AES对象

  cipher = AES.new(key, AES.MODE_CBC, iv)

  # 要加密的数据

  data = '南来北往'

  # 加密数据

  encrypted_data = cipher.encrypt(data.encode())

  # 解密数据

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的数据:', binascii.b2a_hex(encrypted_data))

  print('解密后的数据:', decrypted_data.decode())

  运行

  8. ECB模式

  ECB(Electronic Codebook)是一种分组加密模式,每个块独立加密,但安全性较低。在Python中,可以使用PyCryptodome库来实现ECB模式的加密。

  from Crypto.Cipher import AES

  import binascii

  # 密钥

  key = b'this is a 16 key'

  # 创建AES对象

  cipher = AES.new(key, AES.MODE_ECB)

  # 要加密的数据

  data = '南来北往'

  # 加密数据

  encrypted_data = cipher.encrypt(data.encode())

  # 解密数据

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的数据:', binascii

 


猜你喜欢