常见加密方式和Python实现

import base64

class obj:
  def jiami(self,name):
  # base 加密
    plain1 = base64.b64encode(name)
    return plain1

  def jiemi(self,name):
  # base 解密
    plain_data2 = base64.urlsafe_b64decode(name)
    return plain_data2

a = obj()
kaishijiami = a.jiami(b"youxu")
print(kaishijiami)

kaishijiemi = a.jiemi(kaishijiami)
print(kaishijiemi)

输出结果为:

b'eW91eHU='
b'youxu'

要先安装python的一个库

pip install pycryptodomex
from Cryptodome.Cipher import AES
from Cryptodome import Random
from binascii import b2a_hex  

def Aes(name,key):
  # 要加密的明文
  # data = '南来北往'
  # 密钥key 长度必须为16(AES-128)、24(AES-192)、或32(AES-256)Bytes 长度.
  # 目前AES-128足够用
  # key = b'this is a 16 key'
  # 生成长度等于AES块大小的不可重复的密钥向量
  iv = Random.new().read(AES.block_size)
  # 使用key和iv初始化AES对象, 使用MODE_CFB模式
  mycipher = AES.new(key, AES.MODE_CFB, iv)
  # 加密的明文长度必须为16的倍数,如果长度不为16的倍数,则需要补足为16的倍数
  # 将iv(密钥向量)加到加密的密文开头,一起传输
  ciphertext = iv + mycipher.encrypt(name.encode())
  # 解密的话要用key和iv生成新的AES对象
  mydecrypt = AES.new(key, AES.MODE_CFB, ciphertext[:16])
  # 使用新生成的AES对象,将加密的密文解密
  decrypttext = mydecrypt.decrypt(ciphertext[16:])
  return decrypttext

ls = Aes('南来北往', b'this is a 16 key')


print('密钥k为:', ls)
print('iv为:', b2a_hex(ls)[:16])
print('加密后数据为:', b2a_hex(ls)[16:])
print('解密后数据为:', ls.decode())

输入结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值