当前位置:   article > 正文

用python实现AES-ECB加密解密_python aes ecb

python aes ecb

用python实现AES-ECB加密解密

在这里插入图片描述

# AES-ECB加密
import base64
import hashlib
import json

from Crypto.Cipher import AES
# 秘钥
secret = '1111111111111111'

BLOCK_SIZE = 16  # Bytes
# 补位,补齐16位
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
                chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
# 去除补位
unpad = lambda s: s[:-ord(s[len(s) - 1:])]


# 使用SHA1方法生成的随机数,对key做处理
def get_sha1prng_key(key):
    signature = hashlib.sha1(key.encode()).digest()
    signature = hashlib.sha1(signature).digest()
    return ''.join(['%02x' % i for i in signature]).upper()[:32]


# 判断data是否为16的整数倍,不足的补"\0"
def add_to_16(text):
    if len(text.encode('utf-8')) % 16:
        add = 16 - (len(text.encode('utf-8')) % 16)
    else:
        add = 0
    text = text + ('\0' * add)
    return text.encode('utf-8')


# 加密函数
def encrypt(text):
    mode = AES.MODE_ECB
    # 补位
    text1 = pad(text)
    # 不足16位补上"\0"
    text2 = add_to_16(text1)
    key2 = get_sha1prng_key(secret)
    cryptos = AES.new(bytes.fromhex(key2), mode)
    cipher_text = cryptos.encrypt(text2)
    # 用base64转成字符串形式
    encrypted_text = str(base64.encodebytes(cipher_text), encoding='utf-8')  # 执行加密并转码返回bytes
    return encrypted_text


# 解密,要先去掉补足的空格用strip()去掉
def decrypt(text):
    mode = AES.MODE_ECB
    key2 = get_sha1prng_key(secret)
    cryptor = AES.new(bytes.fromhex(key2), mode)
    # 优先逆向解密base64成bytes
    base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8'))
    # 执行解密密并转码返回str
    decrypted_text = str(cryptor.decrypt(base64_decrypted), encoding='utf-8').replace('\0', '')
    # 去除补位
    decrypted_text1 = unpad(decrypted_text)
    return decrypted_text1


req_data = {
    "name": "李四"
}
# dict格式的可以用json.dumps序列化
# req_data = json.dumps(req_data)
content = encrypt(str(req_data))
decrypt_data = decrypt(content)
print("明文:", decrypt_data)
print("Key:", secret)
print("密文:", content)

#结果
明文: {'name': '李四'}
Key: 1111111111111111
密文: yjGG1V9JYO4/ezGJw8yY3lm390MgKwDjHV1jxZUz+/8=

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/800371
推荐阅读
相关标签
  

闽ICP备14008679号