【Crypto】

关于用python进行信息的加密,类似的解决方案有很多比如用base64编码进行encode,再或者是hashlib来进行hash。但是还缺少一种明明场景很简单的解决方案,就是把利用一个秘钥,把一段明文加密然后用同一个秘钥可以把密文解密的这么一个简单的对称加密。

不信python会没有好的解决方案,就去网上找了一下。找到了利用Crypto这个模块来进行的。虽然安全性上python加密肯定不如静态语言加密的好,不过好歹有了一招比较像样的“防君子”之手段。

■  使用

Crypto不是Python自带的模块,需要安装pip install pycrypto。另外在程序中还要用到binascii这个模块。这个模块在2.7中似乎已经是自带的了。

from Crypto.Cipher importAESfrom binascii importa2b_hex,b2a_hexclassCryptor:#创立一个加密解密用的类

def __init__(self,key):

self.key=self.modifyLength(key)

self.mode=AES.MODE_CBCdefmodifyLength(self,s):

length=len(s)if length %16 ==0:

add=0else:

add= 16 - ( length % 16)return s + '\0' *adddefencrypt(self,text):

text=self.modifyLength(text)

cryptor= AES.new(self.key,self.mode,b'0000000000000000')

rawText=cryptor.encrypt(text)returnb2a_hex(rawText)[0]defdecrypt(self,text):

text=self.modifyLength(text)

cryptor= AES.new(self.key,self.mode,b'0000000000000000')

plain_text=cryptor.decrypt(a2b_hex(text))return plain_text.rsplit('\0')[0]

上面这个类定义了四个方法,第二个方法modifyLength是将传入的字符串进行位数判断,如果不是16的整数倍则用'\0'(即空字符)补全到16的倍数位数比如32位64位等等。这些是AES加密要求的,它要求秘钥、被加密的字符串等位数都要是16位的整数倍的个数。

key自然是创建这个类对象时用的秘钥了,两个方法encrypt和decrypt分别用于加密和解密。加密后的数据是16进制的数据,如果直接用一些编码格式去编码解码的话可能会存在编解码失败的情况,如果想要避免,则可以在加密阶段的密文先做一个十六进制转二进制的处理,在这里用的就是binascii.b2a_hex方法。解密的时候同样记得调用a2b_hex这个方法。另外还需要注意的是解密后的内容要去除末尾的空字符(因用这个类加密时,原来的明文可能被末尾的空字符补充过)

python对称加密_【Python】 基于秘钥的对称加密相关推荐

  1. SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解

    2019独角兽企业重金招聘Python工程师标准>>> 作者:shede333 主页:http://my.oschina.net/shede333 && http:/ ...

  2. md5加密解密代码_Python内置方法实现基于秘钥的信息加解密

    点击关注州的先生 精彩不容错过 在实际编程开发中,我们会使用到各类的加密算法来对数据和信息进行加密.比如密码中比较常见的MD5加密,以及AES加密等等.对于密码认证来说,MD5加密是比较适合的,因为其 ...

  3. SSH HTTPS 公钥、秘钥、对称加密

    DES: Digital Encryption Standard. Obsolete standard. 单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密. ...

  4. 利用OpenSSH实现基于秘钥的认证

    利用OpenSSH实现基于秘钥的认证 SSH协议介绍:     SSH是Secure Shell的缩写,意思是安全的shell          目前版本有 ssh v1和ssh  v2:在目前工作中 ...

  5. iOS安全之RSA加密/生成公钥、秘钥 pem文件

    在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...

  6. iOS RSA加密 以及生成公钥 秘钥 pem文件

    在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...

  7. Vigenere密码(案例:Vigenere密码加密单词”explanation“,秘钥为”leg“。)

    Vigenere密码 是什么 是使用一系列凯撒密码组成密码字母表的加密算法,属于 多表密码 的一种简单形式. 为什么 针对单表代替密码容易被频率分析法破解的缺点,人们提出多表代换密码,用一系列(两个以 ...

  8. python加密库_python基于pyDes库实现des加密的方法

    本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要 ...

  9. python扫雷算法_如何基于Python实现自动扫雷

    这篇文章主要介绍了如何基于Python实现自动扫雷,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 自动扫雷一般分为两种,一种是读取内存数据,而另一种 ...

最新文章

  1. 如何在CentOS 7上使用uWSGI和Nginx来运行Django应用程序
  2. ios 绘制线框_iOS 绘制虚线框
  3. Linux 搭建Sphinx 全文检索引擎
  4. Python 使用@property对属性进行数据规范性校验
  5. 工具——Java后端开发中用到的一些工具(windows)
  6. 启动 docker 容器报错 (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0
  7. 有没有哪种贷款不用利息,而且门槛又低?
  8. SQL server 数据库 (函数篇 2)
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的高铁售票系统
  10. linux shell脚本关于文件存在与否的判断
  11. mysql的索引类型_带您了解mysql索引类型
  12. 华为交换机STP的配置实例
  13. 第一天,搬家到博客园
  14. 基于Cookie跨域的单点登录问题
  15. 推荐一款轻量级好用的开源PDF阅读器,确实好用~
  16. 32位汇编(1) - masm32环境配置
  17. 2000坐标系xy坐标几位_2000国家大地坐标系
  18. android监听软键盘弹出弹回事件
  19. 基于EMC的共模干扰与差模干扰以及抑制方法(转载)
  20. C语言高级教程-C语言数组(三)

热门文章

  1. Linux glib命令行解析GOptionEntry使用
  2. Win10设置WSL大小写敏感
  3. 编译Android4.3内核源代码
  4. pytorch保存.pth文件
  5. java main函数_Java经典面试题集锦
  6. nginx两台文件服务器集群,keepalived结合nginx状态检测脚本实现对web服务器集群的高可用...
  7. flowable 查询完成的流程_中注协正在调试注册会计师成绩查询系统?
  8. python dataframe 选取字段 特别慢_从parqu读取dask dataframe列重命名速度较慢(er)
  9. java程序员就业发展方向_Java程序员有哪些职业发展方向?
  10. python 特征工程_[译] 基于时序数据的特征工程 --- Python实现