信息加密和信息隐藏是实现信息安全与保密的主要手段。除了一些经典的加密解密算法和自己设计的加密算法之外,我们还可以充分利用Python标准库和扩展库提供的丰富功能来辅助我们完成信息加密解密实现。本文收集了6个常用的Python密码学编程库以供参考。

1、Hashids

Hashids是一个非常小巧的跨语言的开源库,它用来把数字编码成一个随机字符串, 并轻松通过key解码回来。这对于将多个参数捆绑到一个参数中或仅将其用作简短的uid非常有用。著名的Youtube网站就是用Hashids把网站数据库id搞乱,让它失去顺序性,无法直接遍历,从而提高爬虫的门槛。

官网:Hashids

2、Paramiko

Paramiko是用于建立 SSH2 连接(客户端或服务器)的Python库。重点是使用 SSH2 作为 SSL 的替代方法,以在 python 脚本之间建立安全连接,以实现远程命令执行、文件传输、中间SSH代理等功能。Paramiko支持所有主要密码和哈希方法。也支持 SFTP 客户端和服务器模式。

官网:Welcome to Paramiko!

3、Passlib

Passlib是基于Python2&3的密码散列库,它提供了30多种密码散列算法的跨平台实现,以及管理现有密码散列的框架。它被设计成可用于广泛的任务,包括从验证/etc/shadow中的散列密码到为多用户应用程序提供高强度密码散列算法。

官网:Passlib 1.7.4 documentation

4、PyNaCl

PyNaCl是libsodium库的Python实现。libsodium是一个基于NaCI开发的先进而且易用的加密库,主要用于加密、解密、签名和生成密码哈希等。PyNaCI能够提供数字签名、密钥加密、公钥加密、哈希和消息身份验证、基于密码的密钥派生和密码散列功能。

Github:pyca/pynacl

5、Cryptography

Cryptography密码库的目标是成为”人类易于使用的密码学包“,它包括The hazardous materials layer和The recipes layer两个部分。The hazardous materials(低级密码学原语)提供了基本的密码概念,如加密、签名、Hash等算法,但是直接使用密码学原语容易出错。所以Cryptography库对密码学原语进行了安全集成,形成了更高层次的The recipes layer (密码学菜谱)。通过其集成的对称密码函数Fernet,我们可以轻松实现对称加密。

官网:Welcome to pyca/cryptography - Cryptography 3.4.dev1 documentation

6、Pycrypto

Pycrypto(Python 密码学工具箱),可以说是密码学编程库中最成功也是最成熟的一个,它提供了MD5、SHA、HMAC等多个安全哈希算法,以及DES、AES、ARC4、RSA、DSA、ElGamal等多个加密算法和数字签名算法的实现,并提供了很多有用的模块和函数(如长字符串转换、随机数生成、数论函数等)。

官网:PyCrypto - The Python Cryptography Toolkit

关于Python密码学

整理这篇文章,是为了更好的学习了解Python的加密解密实现,以备不时之需。而真正去使用,需要有一定Python和密码学基础。如果对密码学有兴趣,并想真正去搞懂学透的话,还是建议从基本的密码学原理和加密解密算法原理入手,推荐我入门学习的一本书,人民邮电出版社的《Python密码学编程》,学习下来还蛮有趣的。

python把字符串3des加密_Python干货之六大密码学编程库相关推荐

  1. python对字符串进行加密_python学习:实现将字符串进行加密

    ''' 题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字 ...

  2. python中字符串异或_python 异或加密字符串的实例

    python 异或加密字符串的实例 做个简单习题:输入明文给定秘钥,密文还原,按位异或处理. import base64 as b64 def xor_encrypt(tips,key): ltips ...

  3. python统计字符串数字个数_python统计字符串中数字个数_后端开发

    python怎么随机生成奇数_后端开发 python随机生成奇数的方法:导入random模块,使用random模块生成随机数,然后判断生成的随机数是否为奇数,若是奇数就加入列表.使用此方法得到的列表包 ...

  4. python的字符串包括哪些_python公开课|Python字符串包含什么,我们应该怎么用

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  5. python输出字符串拼接数字_python实现字符串和数字拼接

    python实现字符串和数字拼接 如下所示: 将i前面加str(i)就可以了 补充拓展:python 连接字符串和数字 python 连接字符串和数字的问题: 首先要说的是,python是强类型的语言 ...

  6. python获取字符串首字母_Python学习之字符串方法总结

    1.首字母大写 1 test = "abcdef" 2 v = test.capitalize() 3 print(v) 2.所有字母变小写,lower()只能对ASCII 也就是 ...

  7. python中文字符串多余空格_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解...

    python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解 在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入 ...

  8. python遍历字符串存入列表_Python遍历字符串的4种方式

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Python遍历字符串的4种方式 1.下标法 2.for in 3.iter内 ...

  9. python中字符串怎么引用_Python:字符串中引用外部变量的3种方法

    方法一: username=input('username:') age=input('age:') job=input('job:') salary=input('salary') info1='' ...

最新文章

  1. 使用Angular依赖注入自定义SAP Spartacus的ProductAdapter
  2. 系统学习redis之二——redis集群搭建
  3. 比特币Merkle树和SPV机制
  4. Python IO 基本编程示例
  5. 拒绝offer的理由_接受拒绝的3大理由
  6. 8g内存一般占用多少_手机的运行内存6g和8g有什么区别?内行人一语道破,别被骗了...
  7. Axure的一些入门小案例
  8. 微信小程序发送模板消息通知
  9. 《1024伐木累》-屌丝、快播、苍老师
  10. SiO2 介孔二氧化硅纳米颗粒的明胶包裹/二氧化硅杂化凝胶固定化醇脱氢酶/白蛋白和壳聚糖包裹的二氧化硅微球/二氧化硅包覆的量子点荧光编码微球
  11. android远程桌面工具下载,Android远程桌面助手
  12. 解决 Office 2007/2010 安装错误:1402
  13. 计算机机房kvm系统配件,KVM设备在机房管理改造中的解决方案
  14. [附源码]SSM计算机毕业设计领导干部听课评课管理系统JAVA
  15. html中的matrix属性,transform,matrix属性讲解
  16. 良心纯干货|杭州配眼镜怎样才能不被坑?业内人士分享
  17. GL benchmark测试解析
  18. ELF PLT Hook 原理简述
  19. SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建——5.Android手机端与robot端ROS网络通信...
  20. php新闻增删改查操作

热门文章

  1. 【Java】Java对象引用四个级别(强、软、弱、虚)
  2. 【java】Java 最坑爹的 10 大功能点
  3. 【registry】Reader schema missing default value for field: age
  4. 连接oracle报错:Invalid connection string format, a valid format is: host:port:sid
  5. MySQL实现时间按月,日,小时分组查询
  6. java switch 不加 break 继续执行 下一个case(不用匹配条件) 这个设计是为什么
  7. Cookie、Session、Token、JWT分别是什么(二)
  8. php数组连起来,PHP 数组的拼接重组
  9. 使用Redis作为分布式锁的错误用法
  10. MySQL误删数据?快速恢复指南来了!