python文本加密是Python 提供了诸如 hashlib,base64 等便于使用的加密库,我们可以借助异或操作,实现一个简单的文件加密程序。
通过了解异或操作的性质,加密原理就非常清晰了。
首先将文件转换成二进制数,再生成与该二进制数等长的随机密钥,将二进制数与密钥进行异或操作,得到加密后的二进制数。
将加密后的二进制程序与密钥进行异或操作,就得到原二进制数,最后将原二进制数恢复成文本文件。
相关拓展
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。
加密之所以安全,绝非因不知道加密解密算法方法,而是加密的密钥是绝对的隐藏,流行的RSA和AES加密算法都是完全公开的,一方取得已加密的数据,就算知道加密算法也好,若没有加密的密钥,也不能打开被加密保护的信息。
单单隐蔽加密算法以保护信息,在学界和业界已有相当讨论,一般认为是不够安全的。公开的加密算法是给黑客和加密家长年累月攻击测试,对比隐蔽的加密算法要安全得多。
尽管加密或为了安全目的对信息解码这个概念十分简单,但在这里仍需对其进行解释。数据加密的基本过程包括对称为明文的原来可读信息进行翻译,译成称为密文或密码的代码形式。该过程的逆过程为解密,即将该编码信息转化为其原来的形式的过程。
以上内容参考 网络-加密
㈡ 12:字符串加密、解密
编码: 将计算机中的字符串按照一定的顺序表示成二进制数据的过程
各国字符编码都不一样:
1、计算机-> 表示[英文字母、数字、部分特殊符号]-> ascii编码 [0~256]
2、万国码,统一字符编码[号称可以统一全球范围内任何语言的表示方式]
任何语言中的任何数据,都可以使用一个字符来表示 unicode编码
3、中国有GB2312-> GBK -> GB18030
4、数据传输编码:unicode transfer format 8 bit [UTF-8]
python中的编码解码:
要命的规则:字符串的编码解码,一直都是任何语言中一个难点和重点
任何字符串->都是由字节组成的!
python3中:字符:(str);字节(bytes)
字符->字节:encode 编码:将一个字符串编码成计算机可以操作的二进制数据
字节->字符:decode 解码:将一个二进制数据按照指定的编码~解码成自然数据
什么是加密: 将一个明文数据,按照指定的算法,运算得到一个其他的可以隐藏真实信息的密文数据,这个过程称为加密;处理的算法称为加密算法;用到的关键数据称为密钥
什么是解密: 按照指定的算法和关键数据,将一个密文数据进行逆向运算得到正确的明文数据的过程成为解密操作
(1)、单向加密算法:只能加密,不能解密的算法
如:用户账号密码(单向加密)存储,此时任何人都不能查看该用户的明文密码
流程->用户输入明文密码->加密->和存储的密文密码进行比较->相等-成功
单向散列加密算法-> MD5加密
单项哈希加密算法-> SHAX加密
(2)、双向加密算法:可以加密,加密的数据可以解密得到明文数据
使用在更多的场景;数据进行加密传输->目标地址->解密得到明文数据进行处理
对称加密:加密和解密使用相同的秘钥;
非对称加密:加密和解密使用不同的秘钥;如HTTPS传输数据
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法
注意: hashlib 加密啊的字符串类型为二进制编码,直接加密字符串会报如下错误:
有两种方式可以将字符串转化为二进制数据
㈢ python的加密方式: rsa加密和解密
RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。
生成文件如下图:
可以将生成的公钥、私钥粘贴复制存储起来,以便使用:
在使用中, 通常会先对数据进行bas64加密, 再对加密后的内容使用rsa加密, 最后对rsa解密后的内容进行bas64解密.
㈣ 求python中的恺撒密码的加密,解密,以及破解的程序
凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。
如下代码是以偏移量为13展开计算的。123
源代码如下:
sr1="abcdefghijklmnopqrstuvwxyz"sr2=sr1.upper()
sr=sr1+sr1+sr2+sr2
st="The Zen of Python"sResult=""for j in st: if j==" ":
sResult = sResult +" "
continue
i=sr.find(j) if(i>-1):
sResult=sResult+sr[i+13]print sResult12345678910111213
运行结果为:
Gur Mra bs Clguba