今天需要用到AES CBC模式加密,搜索了很久,终于加密成功,记录一下今天的理解。

首先要安装pycrypto库,不知道为什么在windows安装失败,在linux可以正常安装

这里有几点要注意,key的长度要是16,24或32,text的长度要是16的倍数,不满足长度都会补全,补全的字符可以自己定义,比如key补全不一定要"\0", 你还可以用其他的,text补全的字符在你解密的时候会用到,

不过下面补全的字符应该是和上面两个url补全的字符一样的。

# -*- encoding: utf-8 -*-

from Crypto.Cipher import AES

import base64

BS = AES.block_size # 这个等于16

mode = AES.MODE_CBC

pad = lambda s: s + (BS-len(s))*"\0" # 用于补全key

# 用于补全下面的text,上面两个网址就是用以下形式补全的

pad_txt = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)

unpad = lambda s : s[0:-ord(s[-1])]

key = "123" # the length can be (16, 24, 32) # key

text = 'http://www.baidu.com/' # 加密文本

vi = "HjRP7LlXuSsFMisz" # 偏移量

cipher = AES.new(pad(key), mode, vi)

encrypted = cipher.encrypt(pad_txt(text))

#通过aes加密后,再base64加密

encrypted = base64.b64encode(encrypted)

print(encrypted)

cryptor=AES.new(pad(key),mode, vi)

# 解密,解密后text文本会包含用来补全的字符

plain_text = cryptor.decrypt(base64.b64decode(encrypted))

print(plain_text)

python aes加密 cbc_【转载】python AES CBC模式加密相关推荐

  1. python aes加密 cbc_Python实现AES的CBC模式加密和解密过程详解 和 chr() 函数 和 s[a:b:c] 和函数lambda...

    1.chr()函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 2.s[a:b:c] s=(1,2,3,4,5) 1>. s[a]下标访 ...

  2. 化学人学python有前途吗-转载:python之蟒开启理论计算化学的新时代

    转载:python之蟒开启理论计算化学的新时代 (2014-01-23 23:04:00) 标签: python gaussian python之蟒开启理论计算化学的新时代 就像iphone和andr ...

  3. go、JS AES(CBC模式)加密解密兼容

    js 代码: <!DOCTYPE html>   <html lang="en">   <head>       <meta charse ...

  4. format函数python的顺序_[转载] Python中format函数用法

    Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...

  5. python 每次读一行-转载 python每次读入文件一行的问题(血的教训啊)

    注意到Python每次读入一个文件的一行时,可以有两种写法: f = open("bigFile.txt","r") while True: line = f. ...

  6. python中await async_[转载]python中的await和async

    原文https://blog.csdn.net/Likianta/article/details/90123678 from time import sleep, time def demo1(): ...

  7. python base64编码_JS和Python实现AES算法

    1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...

  8. 【加密】DES加密算法中,ECB和CBC模式有什么区别?

    目录 ECB和CBC模式的区别 ECB模式 CBC模式: AES五种加密模式(CBC.ECB.CTR.OCF.CFB) ECB (Electronic Codebook Book电码本模式) CBC( ...

  9. java中3des cbc,js與java通用的3DES(ECB,CBC)+Base64加密編碼,解碼解密

    J S端加密過程: key的處理: 通過創建指定的key,key必須是16位/24位/32位其中一種,但是常用的3DES加密的key為24位,下面使用的就是24位,key的長度可以隨意指定,在轉換ke ...

最新文章

  1. 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
  2. PowerShell_5_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
  3. k8s集群配置使用coredns代替kube-dns
  4. Qt Creator寻找
  5. 原作者出局,Faker.js已被社区控制
  6. CodeForces - 1304D Shortest and Longest LIS(构造+贪心)
  7. 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)
  8. 【POJ - 3723】Conscription (最大生成树,最小生成树MST变形)
  9. 阮一峰的Javascript模块化编程(三):require.js的用法
  10. BZOJ5249:[九省联考2018]IIIDX——题解
  11. c++ class 类名 和 include 的区别
  12. 开源公司黄页之Facebook开源软件推荐(一)
  13. 反序列化对象列表发生异常_面试官:你知道Java对象的序列化与反序列化背后的原理吗?...
  14. MySQL 常用分库分表方案,都在这里了!
  15. hbase java 教程_Hbase 教程-安装
  16. Java初级程序员需要知道的基本Java代码规范
  17. Flutter-16进制透明颜色对照表
  18. Postgres-XL 9.5简易搭建
  19. 进入大数据时代,目前我国大数据的发展趋势怎么样
  20. html img 拉伸,图片因img标签拉伸的处理办法

热门文章

  1. ResNet在分别在Keras和tensorflow框架下的应用案例
  2. 数据产品-数据分析和可视化工具Excel基础使用
  3. Moment.js常见用法总结 1
  4. 招兵买马,韩国现代将前GM研究员招致麾下
  5. kali操作系统SSH问题解决方案
  6. (转)使用CGLIB实现AOP功能与AOP概念解释
  7. Mysql 新增用户可访问指定数据库所有权限
  8. 打造TypeScript的Visual Studio Code开发环境
  9. Linux下性能监控工具介绍
  10. WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变...