- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编码解码-加密
编码解码
编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在点击计算机、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码就是编码的逆过程。
编码
制定时间
作用
所占字节数
ASCII
1967年
表示英语及西欧语言
8bit/1bytes
GB2312
1980年
国家简体中文字符集,兼容ASCII
2bytes
Unicode
1991年
国际标准组织统一标准字符集
2bytes
GBK
1995年
GBK2312的扩展字符集,支持繁体字,兼容GB2312
2bytes
UTF-8
1992年
不定长编码
1-3bytes
第一种:ASCII码
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646
第二种:GBK 和 GB2312
对于我们来说能在计算机中显示中文字符是至关重要的,然而ASCII表里连一个偏旁部首也没有。所以我们还需要一张关于中文和数字对应的关系表。一个字节只能最多表示256个字符,要处理中文显然一个字节是不够的,所以我们需要采用两个字节来表示,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
第三种:Unicode
因为各个国家都一套自己的编码,就不可避免会有冲突, 因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
注:在python中使用函数encode()进行编码,使用decode()进行解码。函数decode(char_set)可以实现从其他编码到Unicode的转换,函数encode(char_set)可以实现从Unicode到其他编码方式的转换。
实验一:
执行以下python代码,通过输出,比较每种编码的不同之处
#-*- coding:utf-8 -*-
s = 安全实验
s1=s.encode(utf-8)
print(s1,type(s1)) #utf-8编码
s2 = s1.decode(utf-8) # utf-8 转成 Unicode,decode(解码)需要注明当前编码格式
print(s2,type(s2))
s3 = s2.encode(gbk) # unicode 转成 gbk,encode(编码)需要注明生成的编码格式
print(s3,type(s3))
s4 = s2.encode(utf-8) # unicode 转成 utf-8,encode(编码)注明生成的编码格式
print(s4,type(s4))
结果为:
b\xe5\xae\x89\xe5\x85\xa8\xe5\xae\x9e\xe9\xaa\x8c class bytes
安全实验 class str
b\xb0\xb2\xc8\xab\xca\xb5\xd1\xe9 class bytes
b\xe5\xae\x89\xe5\x85\xa8\xe5\xae\x9e\xe9\xaa\x8c class bytes
加密
1. 前言
加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。
将字符串和Bytes互相转换可以使用encode()和decode()方法。如下所示:
# 方法中不传参数则是以默认的utf-8编码进行转换
In [1]: 安全.encode()
Out[1]: b\xe5\xae\x89\xe5\x85\xa8
In [2]: b\xe5\xae\x89\xe5\x85\xa8.decode()
Out[2]: 安全
注:两位十六进制常常用来显示一个二进制字节。
利用binascii模块可以将十六进制显示的字节转换成我们在加解密中更常用的显示方式:
In [1]: import binascii
In [2]: 安全.encode()
Out[2]: b\xe5\xae\x89\xe5\x85\xa8
In [3]: binascii.b2a_hex(安全.encode
文档评论(0)