美文网首页大数据 爬虫Python AI SqlPython学习资料Python
一些常见的加密方式!Python都能解密!Python简直不能太

一些常见的加密方式!Python都能解密!Python简直不能太

作者: 919b0c54458f | 来源:发表于2018-07-12 14:48 被阅读12次

    注:两位十六进制常常用来显示一个二进制字节。

    利用 binascii 模块可以将十六进制显示的字节转换成我们在加解密中更常用的显示方式:

    URL编码

    简介

    正常的URL中是只能包含ASCII字符的,也就是字符、数字和一些符号。而URL编码就是一种浏览器用来避免url中出现特殊字符(如汉字)的编码方式。

    其实就是将超出ASCII范围的字符转换成带 % 的十六进制格式。

    Base64编码

    简述

    Base64是一种用64个字符来表示任意二进制数据的方法。

    Base64编码可以成为密码学的基石。可以将任意的二进制数据进行Base64编码。所有的数据都能被编码为并只用64个字符就能表示的文本文件。( 64字符:A~Z a~z 0~9 + / )编码后的数据~=编码前数据的4/3,会大1/3左右。

    Base64编码的原理

    Python的Base64使用

    Python内置的 base64 模块可以直接进行base64的编解码

    注意:用于base64编码的,要么是ASCII包含的字符,要么是二进制数据

    Python的MD5使用

    由于MD5模块在python3中被移除,在python3中使用 hashlib 模块进行md5操作

    D5长度

    md5的长度,默认为128bit,也就是128个0和1的二进制串。这样表达是很不友好的。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,为32位了。

    为什么网上还有md5是16位的呢?

    其实16位的长度,是从32位md5值来的。是将32位md5去掉前八位,去掉后八位得到的。

    Python加密库PyCryptodome

    PyCrypto是 Python 中密码学方面最有名的第三方软件包。可惜的是,它的开发工作于2012年就已停止。

    幸运的是,有一个该项目的分支PyCrytodome 取代了 PyCrypto 。

    DES

    简介

    DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。

    DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。

    DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

    3DES

    简介

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。

    由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解。3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

    特点与思想

    抵抗所有已知的攻击。

    在多个平台上速度快,编码紧凑。

    设计简单。

    详解

    1524901614191.png

    AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同。

    一般常用的是128位

    简介

    RSA加密算法是一种 非对称加密算法 。在公开密钥加密和电子商业中RSA被广泛使用。

    该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

    Python实现

    首先我们需要安装一个 rsa 模块:

    pip install rsa

    而且,因为RSA加密算法的特性,RSA的公钥私钥都是10进制的,但公钥的值常常保存为16进制的格式,所以需要将其用 int() 方法转换为10进制格式。

    运行结果:

    公钥n值长度: 256

    480f302eed822c8250256511ddeb017fcb28949cc05739ae66440eecc4ab76e7a7b2f1df398aefdfef2b9bfce6d6152bf6cc1552a0ed8bebee9e094a7ce9a52622487a6412632144787aa81f6ec9b96be95890c4c28a31b3e8d9ea430080d79297c5d75cd11df04df6e71b237511164399d72ccb2f4c34022b1ea7b76189a56e

    进群:125240963    即可获取数十套PDF哦!

    相关文章

      网友评论

        本文标题:一些常见的加密方式!Python都能解密!Python简直不能太

        本文链接:https://www.haomeiwen.com/subject/cdqrpftx.html