介绍AES加密算法基础篇

废话不多说,直接开干!
先看看加密网址访问地址

介绍加密说明,百度得知!

AES

AES,高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。包括AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB

明文

是指没有加密的文字(或者字符串),一般人都能看懂的意思,属于密码学术语。 [1] 在通信系统中它可能是比特流,如文本、位图、数字化的语音或者数字化的视频图像等。一般可以简单地认为明文是有意义的字符或比特集,或通过某种公开的编码标准就能获得的消息。经过某个加密算法进行作用,将作用后的文字称为密文。对密文来说,若想得到明文,就应通过与加密算法对应的解密算法进行解密,恢复出明文。

密钥

用来加密明文的密码(对称加密中加解密为同一个密钥)

密钥传输

不可以直接在网络上传输,否则会导致密钥泄漏,通常是 通过非对称加密算法加密密钥,然后再通过网络传输给对方 ,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

加密函数

设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C

解密函数

设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P

密文来源

大概意思是经过加密函数处理后的数据

最后我们上代码测试一下!
遇到Cryptodome问题,解决方法如下链接
解决Crypto无法加载问题

from Cryptodome.Cipher import AES
import base64


BLOCK_SIZE = 16  # Bytes
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:])]


def Encrypt(key, data):
    """
       AES长度为:32, 48, or 64,
    """
    key = key.encode('utf8')
    data = pad(data)
    cipher = AES.new(key, AES.MODE_ECB)
    # 加密后得到的是bytes类型的数据,使用Base64进行编码,返回byte字符串
    result = cipher.encrypt(data.encode())
    encodestrs = base64.b64encode(result)
    enctext = encodestrs.decode('utf8')
    return enctext

def Decrypt(key, data):
    """
     AES长度为:32, 48, or 64,
    """
    key = key.encode('utf8')
    data = base64.b64decode(data)
    cipher = AES.new(key, AES.MODE_ECB)

    text_decrypted = unpad(cipher.decrypt(data))
    text_decrypted = text_decrypted.decode('utf8')
    return text_decrypted


if __name__ == '__main__':
    # 密钥
    key = '1c55c819appuiop0'
    # 需要加密数据
    data = 'my name is soubei'

    ecdata = Encrypt(key, data)
    print(ecdata)
    dec = Decrypt(key, ecdata)
    print(dec)

运行结果


+P0/Pog35SVVpsVs1f7dWR1mplJfrreP/WDMcAb78AE=
my name is soubei

Process finished with exit code 0

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值