Python pycrypto 加密与解密
参考: python 使用 pycrypto 实现 AES 加密解密
参考: 分组对称加密模式:ECB/CBC/CFB/OFB
代码示例 :
import hashlib
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
def encrypt(key, text):
# 密钥 key 的长度必须为 16(AES-128), 24(AES-192), 32(AES-256) Bytes,
# 所以直接将用户提供的 key md5 变为 32 位.
key_md5 = hashlib.md5(key).hexdigest()
# AES.MODE_CFB 是分组加密模式, b'0000000000000000'
# 是初始化向量 IV, 16 位要求, 可以看做是另一个密钥. 在部分分组模式中需要.
cipher = AES.new(key_md5, AES.MODE_CFB, b'0000000000000000')
# AES 要求需要加密的内容长度为 16 的倍数, 当密文长度不够的时候使用 '\0' 补足.
ntext = text + ('\0' * (16-(len(text) % 16)))
# b2a_hex 转换一下, 默认加密后的字符串有很多特殊字符.
return b2a_hex(cipher.encrypt(ntext))
def decrypt(key, text):
key_md5 = hashlib.md5(key).hexdigest()
cipher = AES.new(key_md5, AES.MODE_CFB, b'0000000000000000')
t = cipher.decrypt(a2b_hex(text))
return t.rstrip('\0')
# 基于类的实现:
class MyCrypt(object):
def __init__(self, key):
self.key = hashlib.md5(key).hexdigest()
self.mode = AES.MODE_CFB
self.salt = b'0000000000000000'
def encrypt(self, text):
cipher = AES.new(self.key, self.mode, self.salt)
ntext = text + ('\0' * (16-(len(text) % 16)))
return b2a_hex(cipher.encrypt(ntext))
def decrypt(self, text):
cipher = AES.new(self.key, self.mode, self.salt)
t = cipher.decrypt(a2b_hex(text))
return t.rstrip('\0')
Python pycrypto 加密与解密的更多相关文章
- python RSA加密、解密、签名
python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...
- 用python进行加密和解密——我看刑
加密和解密 密码术意味着更改消息的文本,以便不知道你秘密的人永远不会理解你的消息. 下面就来创建一个GUI应用程序,使用Python进行加密和解密. 在这里,我们需要编写使用无限循环的代码,代码将不断 ...
- Python: AES加密与解密
起源: 视频下载,解析到一个网站时,发现其视频id是用AES加密过的,用的是https://code.google.com/archive/p/crypto-js/这个库.解密很简单的一句js代码: ...
- python AES 加密与解密
#用aes加密,再用base64 encode def aes_encrypt(data): from Crypto.Cipher import AES import base64 key=setti ...
- Python Des加密与解密实现软件注册码、机器码
原理 判断路径下是否存在识别文件,若存在就解密对比,若不存在就进入机器码注册: 获取系统C盘序列号作为识别ID,并添加随机数作为混淆,生成最终机器码. 将机器码发给软件开发者,开发者将机器码解密后,添 ...
- python 自定义加密与解密
import tkinter import webbrowser import re #本程序是一个中文字符和中文检测工具 #中文字符自己添加,我只添加了一点 #输入字符串,点击检查文本即可判断有没有 ...
- 使用python进行加密解密AES算法
使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- Python加密与解密
前言 据记载,公元前400年,古希腊人发明了置换密码.1881年世界上的第一个电话 保密专利出现.在第二次世界大战期间,德国军方启用“恩尼格玛”密码机, 密码学在战争中起着非常重要的作用. 随着信息化 ...
随机推荐
- java.util.zip.ZipException: invalid LOC header (bad signature)
Debug on Server(Tomcat 9) 遇到这个exception: SEVERE: A child container failed during startjava.util.conc ...
- GBDT与LR融合提升广告点击率预估模型
1GBDT和LR融合 LR模型是线性的,处理能力有限,所以要想处理大规模问题,需要大量人力进行特征工程,组合相似的特征,例如user和Ad维度的特征进行组合. GDBT天然适合做特 ...
- 对游览器遭到劫持的处理方案(RemoveAds Not By This Site)
近期游览器一直被劫持 :火狐用不了,ie出毛病了,谷歌游览器也不好使了,已经快被逼疯!!! 但是事情总是向着美好的方向发展的么! 接下来就和大家一起分享一下我的解决经验! 首先用360杀毒(虽然大多数 ...
- 将字符串当做是php代码执行的函数eavl()
- Visual Studio 2013 IIS Express使用域名调试mvc程序
1.编辑applicationhost.config文件 启动vs2013,在右下角IIS Express图标中右击,显示如图,点击框中菜单. 找到你的启动项,点击1,然后点击2,这是应该会有编辑器打 ...
- java内存模型7-处理器内存模型
处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照.JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序 ...
- Collection<E>、Iterable<T>和Iterator<E>接口
Collection接口 public interface Collection<E>extends Iterable<E> Collection接口主要包含以下方法: Ite ...
- React入门---JSX内置表达式-6
个人理解:接触的JSX就是在React中render方法里面的js,因为里面只能有一个节点,所以你写的东西都在一个div中,要有js所以通过JSX来表达.(个人菜鸟理解,欢迎指正) React 使用 ...
- 【JAVAWEB学习笔记】18_el&jstl&javaee的开发模式
一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...
- php.ini 文件中配置的意义注释
;;;;;;;;;;;;;;;;;;;; About php.ini ; //关于php;;;;;;;;;;;;;;;;;;;; PHP's initialization file, gener ...