python aes new_AES加密的Python实现

AES加密原理见文章尾部推荐博客

具体代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from Crypto.Cipher import AES

import base64

import hashlib

PADDING = '\0'

# 去除填充

def _unpadding(str):

l = len(str)

if l == 0 :

return str

asc = ord(str[-1])

if asc >= 16:

return str

return str[0:-asc]

# 填充

def _padding(data):

length = 16 - (len(data.encode('utf-8')) % 16)

data += chr(length)*length

return data

def _cipher(key):

iv = '0123456789ABCDEF'

m2 = hashlib.md5()

m2.update(key.encode('utf-8'))

return AES.new(key=m2.digest(), mode=AES.MODE_CBC, IV=iv)

class EncryptHelper:

def __init__(self):

pass

@staticmethod

def encrypt(plain_text, key):

data=_cipher(key).encrypt(_padding(plain_text))

return str(base64.b64encode(data),'utf-8')

@staticmethod

def decrypt(encrypted_text, key):

data = base64.b64decode(encrypted_text)

bytes= _cipher(key).decrypt(data)

blank=str(bytes,'utf-8').strip()

return _unpadding(blank)

这里有两个函数解释一下:

chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

ord()函数以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值。

如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值