编码: 将计算机中的字符串按照一定的顺序表示成二进制数据的过程
各国字符编码都不一样:
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 加密啊的字符串类型为二进制编码,直接加密字符串会报如下错误:
有两种方式可以将字符串转化为二进制数据
from random import seed,randint
str_in=input('请输入一个字符串:')
you_seed=input('请输入密码:')
you_seed=int(you_seed)
#lock
def my_lock(lock_str,lock_seed):
seed(lock_seed)
li_out=[]
for i in lock_str:
li_out.append(chr(ord(i)^randint(0,65535)))
return ''.join(li_out)
my_lock_str=my_lock(str_in,you_seed)
print('原字符串:',str_in)
print('加密字符串:',my_lock_str)
print('还原后字符串:',my_lock(my_lock_str,you_seed))
input()
#python 3.4
对 Python 加密时可能会有两种形式,一种是对Python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。
1、 对 python转exe加壳
下载最新版Virbox Protector加壳工具,使用加壳工具直接对demo.exe进行加壳操作
2、对.py/.pyc加密
第一步,使用加壳工具对 python 安装目录下的 python.exe 进行加壳,将 python.exe 拖入到加壳工具 VirboxProtector 中,配置后直接点击加壳。
第二步,对.py/.pyc 进行加密,使用 DSProtector 对.py/.pyc 进行保护。
加密是将一个明文数据,按照指定的算法,运算得到一个其他的可以隐藏真实信息的密文数据,这个过程称为加密;处理的算法称为加密算法;用到的关键数据称为密钥。
解密是按照制定的算法和关键数据,将一个密文数据进行逆向运算得到的正确的明文数据的过程
如:用户账号密码存储,此时任何人都不能查看该用户的明文密码
1.原始数据
2.编码(转换为字节数据)
3.使用算法加密
4.利用盐值更新密文
5.得到加密后的数据
编码:字符串.encode(编码名称)——字节数据
解码:字节数据.decode(编码名称)——字符串数据
==========================================
RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。
生成文件如下图:
可以将生成的公钥、私钥粘贴复制存储起来,以便使用:
在使用中, 通常会先对数据进行bas64加密, 再对加密后的内容使用rsa加密, 最后对rsa解密后的内容进行bas64解密.