AES 加密

先来个后台 Python 版本:

#!/usr/bin/python3.5

from Crypto.Cipher import AES 
import codecs

BLOCK_SIZE = 16

# PKCS5 Padding
pad = lambda s: \
    s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) \
    * chr(BLOCK_SIZE - len(s) % BLOCK_SIZE) 

unpad = lambda s : s[0:-ord(s[-1])]

key = '424f96239d6a0de755155ecd57ef37d7'
mode = AES.MODE_CBC
enc = AES.new(key, mode, IV='1234567890123456')
text = 'time=1234567||4f5678123456adfrgdtgvbgecbh55665'
ciphertext = enc.encrypt(pad(text))

print(codecs.encode(ciphertext, 'hex'))

https://www.dlitz.net/software/pycrypto/api/current/

注意,明文串要求是 BLOCK_SIZE (默认16)的整数倍,如果不是,就涉及一个 padding 补白的问题。

默认情况下,会使用 PKCS5 的方法进行补白,方式就是将剩余的位数作为二进制的 charcode 填充直到对齐。

例如,空余三个空格,就用 \x03 填充,如果空余 10 个空格,就用 \x0B 填充,以此类推。


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/11/aes.html【AES 加密】

发表评论

电子邮件地址不会被公开。 必填项已用*标注