python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法
用惯用的写法总报TypeEerror错误,经过调试,总算成功啦,直接上代码
TypeError("Object type %s cannot be passed to C code" % type(data))
class Aes_ECB(object):
def __init__(self,key):
self.key = key
self.MODE = AES.MODE_ECB
self.BS = AES.block_size
self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
self.unpad = lambda s: s[0:-ord(s[-1])] # str不是16的倍数那就补足为16的倍数
def add_to_16(value):
while len(value) % 16 != 0:
value += '\0'
return str.encode(value) # 返回bytes def AES_encrypt(self, text):
aes = AES.new(Aes_ECB.add_to_16(self.key), self.MODE) # 初始化加密器
encrypted_text = str(base64.encodebytes(aes.encrypt(Aes_ECB.add_to_16(self.pad(text)))), encoding='utf-8').replace('\n', '') #这个replace大家可以先不用,然后在调试出来的结果中看是否有'\n'换行符
# 执行加密并转码返回bytes
return encrypted_text # 解密
def AES_decrypt(self, text):
# 初始化加密器
aes = AES.new(Aes_ECB.add_to_16(self.key), self.MODE)
# 优先逆向解密base64成bytes
base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8'))
decrypted_text = self.unpad(aes.decrypt(base64_decrypted).decode('utf-8'))
decrypted_code = decrypted_text.rstrip('\0')
return decrypted_code
python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法的更多相关文章
- C# AES的128位、192位、256位加密
C# AES的128位.192位.256位加密 AES加密原理,这里就不解释了,自行百度.这里主要细说AES的CBC加密模式下的128位.192位.256位加密区别,参考 对称加密和分组加密中的四 ...
- 参考别人的代码写的aes加密,记录一下(AES,ECB模式,填充PKCS5Padding,数据块128位,偏移量无,以hex16进制输出)
package org.jimmy.autosearch2019.test; import java.security.SecureRandom; import javax.crypto.Cipher ...
- C# 128位AES 加密解密 (转)
/// AES加密 2 /// </summary> 3 /// <param name="inputdata">输入的数据 ...
- .NET AES加解密(128位)
AES加密(128位): /// <summary> /// 有密码的AES加密 /// </summary> internal static string Encrypt(s ...
- php AES cbc模式 pkcs7 128位加密解密(微信小程序)
PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '12345 ...
- SGC强制最低128位加密,公钥支持ECC加密算法的SSL证书
Pro SSL证书,验证企业域名所有权和企业身份信息,采用SGC(服务器门控)技术强制128位以上至256位加密,属于企业OV验证级专业版(Pro) SSL证书:即使用户使用低版本浏览器(比如浏览 ...
- AES的256位密钥加解密报 java.security.InvalidKeyException: Illegal key size or default parameters 异常的处理及处理工具
一.出现的现象为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用.我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进行什么特殊处理:然 ...
- AES CBC 128的实现
原由 AES已经变成目前对称加密中最流行算法之一,AES可以使用128.192.和256位密钥,并且用128位分组加密和解密数据. 项目中需要使用AES对密码信息进行加密,由嵌入式设备使用C语言进行加 ...
- python3 执行AES加密方法
cmd执行命令:pip install pycryptodome # -*- coding: utf-8 -*- # __author__ = 'Carry' import base64 from C ...
随机推荐
- php_Ubuntu Linux下为PHP5安装cURL,mysql
如果你在用PHP, 你可能需要用到cURL, 这是其中最流行的插件. PHP CURL插件需要通过libcurl来实现, Daniel Stenberg创建的一个库, 能够和许多不同类型协议的web服 ...
- ubuntu进不去桌面
今天折腾ubunu的时候,总是进不去桌面,开机直接进入啦终端模式.在google帮助终于解决. sudo apt install --reinstall gnome-shell ubuntu-desk ...
- 多线程Parallel和Task
不管是Parallel还是Task,最里面都是线程池(里面是线程)当开启多个任务后,系统会根据当前的线程池的资源进行分配,任务则进行等待Parallel可以对系统的CPU进行设置,可以最大程度上榨干系 ...
- 使用xargs同步文本中单词出现个数
#!/bin/bash # 分析一个文本文件中单词出现的频率. # 使用 'xargs' 将文本行分解为单词. # 检查命令行上输入的文件. ARGS= E_BADARGS= E_NOFILE= if ...
- Qt 跨UI线程的数据交换和信号-槽调用实现方案汇总
一.目录 转载1: http://my.oschina.NET/fanhuazi/blog/737224?ref=myread 点击打开链接 转载2: http://www.qtcn.org/bbs/ ...
- 浅谈网络I/O多路复用模型 select & poll & epoll
http://blog.csdn.net/nk_test/article/details/50662946
- virtualbox 安装 extension pack 方法以及出现 "The installer failed with exit code 1: VBoxExtPackHelperApp.exe: error: Failed to rename the temporary directory to the final one"的解决办法
virtualbox 的版本:5.1.26 下载地址:https://www.virtualbox.org/wiki/Downloads extension pack 的版本:5.1.26 ...
- 如何开发Office平台上的扩展应用(又称为Office 2013 App,Office 2013 Add-Ins,Apps for Office,Office 应用)
Office 扩展应用(Office Apps,Office 2013 AddIns,Apps for Office)开发 —— 中文文档 继 VBA 和 VSTO 之后, 微软为 Office 平台 ...
- ColorCode是一个在线随机取色工具,可以随机获取十六进制、RGB、HSl等颜色。
ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.HSl等颜色. ColorCode 彩蛋爆料直击现场 ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.H ...
- 关于CEdit控件的透明(重绘)
摘自:http://www.jcwcn.com/html/VC/10_19_51_12.htm 做一个透明的Edit控件的主要问题是字符的输出,在Edit里输出的刷新有几个时机,一个是在接收到键盘或鼠 ...