【Python】AES 128加密和解密

Python 系列

【Python】AES 128加密和解密_第1张图片


文章目录

  • Python 系列
  • 前言
  • 一、AES 是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.实际操作代码
  • 总结


前言

AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、AES 是什么?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

from Crypto.Cipher import AES
from binascii import unhexlify
import codecs

2.实际操作代码

代码如下(示例):

# !/usr/bin/env python
# -*-coding:utf-8 -*-
# @Description     :aes 128 的加密和解密操作
from Crypto.Cipher import AES
from binascii import unhexlify
import codecs

# key 是16字节,或者是16字节的倍数,
# data 也需要是16字节的倍数
key = '123456789abcdef123456789abcdef11'
key = unhexlify(key)


def do_encrypt(data):
    """
    加密
    :return:
    """
    # 转为字节
    data = unhexlify(data)
    # b'\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x11\x11\x11\x11\x11\x11'
    # 可以自己选择模式
    cipher = AES.new(key, AES.MODE_ECB)
    encrypted_data = cipher.encrypt(data)
    # 需要转为16进制
    last_data = codecs.encode(encrypted_data, 'hex')
    print('encrypted_data', encrypted_data)  # b'\xf2\x19\x08\x90\x98\x822\x81\xd5!\xc67lE\t5'
    print('last_data', last_data)  # b'f219089098823281d521c6376c450935'
    print('加密后的数据为:', bytes.decode(last_data))  # f219089098823281d521c6376c450935
    return bytes.decode(last_data)


def do_decrypt(data):
    """
    解密
    :param data:
    :return:
    """
    # 转为字节
    data = unhexlify(data)
    # 可以自己选择模式
    cipher = AES.new(key, AES.MODE_ECB)
    encrypted_data = cipher.decrypt(data)
    # 需要转为16进制
    last_data = codecs.encode(encrypted_data, 'hex')
    print('解密后的数据:', bytes.decode(last_data))


if __name__ == '__main__':
    encrypt_data = do_encrypt("00000000000000001111111111111111")
    do_decrypt(encrypt_data)


总结

【Python】AES 128加密和解密_第2张图片

你可能感兴趣的:(Python,其他,python,开发语言)