今天需要用到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. zookeeper快速入门——部署
  2. ethereumjs/ethereumjs-vm-2-API文档
  3. MIT-THU未来城市创新网络即将和你见面!
  4. 动态规划 RQNOJ 吃西瓜 最大子段和三维版
  5. 04_有序清单无序清单
  6. 进程间通信之管道通信
  7. Hemberg-lab单细胞转录组数据分析(七)-导入10X和SmartSeq2数据Tabula Muris
  8. solr导入mysql时间类型_docker 安装solr 导入mysql时报错
  9. 2022黑马程序员-前端学习第一阶段(Day02-HTML基础)
  10. PCB分析神器,一键找出Bug
  11. 苹果键盘快捷键驱动_如何在Windows中使用键盘快捷键打开光盘驱动器
  12. linux带密码解压密码,linux下解压有密码的rar压缩包
  13. 使用python制作爬虫_使用Python的urllib和urllib2模块制作爬虫的实例教程
  14. mysql中约束由数字构成_MySQL 数据类型和约束(外键是重点)
  15. 180度舵机使用经验
  16. mariadb无法update修改root密码ERROR 1348 (HY000): Column 'Password' is not updatable
  17. Ubuntu命令行下运行matlab
  18. 如何在Debian 9上安装和使用Docker
  19. 手机用的网络和计算机用的网络一样吗,终于懂了手机用电脑的网络上网
  20. vivo计算机隐藏游戏,vivoX30功能使用教程 隐藏游戏图标不让孩子发现

热门文章

  1. Excel VBA 词根管理工具
  2. 招兵买马,韩国现代将前GM研究员招致麾下
  3. 【noi 2.6_2421】Exchange Rates(DP)
  4. eclipse使用maven tomcat插件部署无法关联源代码
  5. 一个apply的实例
  6. Postgres访问其他PostgresQL数据库的功能DBLINK
  7. 微软鲍尔默:IE9浏览器将会在3月发布
  8. editplus public class自动补齐大括号问题破解
  9. php 截取某个字符,PHP_php截取指定2个字符之间字符串的方法,本文实例讲述了php截取指定2个 - phpStudy...
  10. 怎样分析java进程占cpu_java进程占用cpu过高分析是哪些线程