15、js加密解密

本文详细介绍了加密解密的概念和作用,包括保密性、完整性和有效性。讲解了字符编码、Base64编码原理及其在网络传输中的应用。进一步探讨了单向加密如MD5和SHA,以及对称加密如DES、3DES和AES的加密原理和Python实现。最后讨论了非对称加密,以RSA加密算法为例,解释了其加密原理和安全性。
摘要由CSDN通过智能技术生成

一.概念和作用

概念

加密解密:一个信息干扰的过程,保证固定的人才可以看到你的信息

把重要的数据变为乱码(加密)传送,
到达目的地后再用相同或不同的手段还原(解密)

作用

网络信息传输安全涉及到很多个方面,其中主要有三个要解决的问题:

  • 保密性(Confidentiality):信息在传输时不被泄露
  • 完整性(Integrity):信息在传输时不被篡改
  • 有效性(Availability):信息的使用者是合法的

常用加密方式

数据加密方式 描述 主要解决的问题 常用算法
对称加密 指数据加密和解密使用相同的密钥 数据的机密性 DES, AES
非对称加密 也叫公钥加密,指数据加密和解密使用不同的密钥–密钥对儿 身份验证 DSA,RSA
单向加密 指只能加密数据,而不能解密数据 数据的完整性 MD5,SHA系列算法

二.字符编码

进制

编码为了让数字能代表一个符号,所以才有对应的编码号,所以每个编码号都是代表十进制的形式来让人们认识的,但是为了保存数据,计算机用进制做代表来存储,但是可以以各种进制来表示,但二进制是最小的单位,1kbit存储量代表能存1000个二进制数字,但指会以8倍为一组。二进制变化的范围最大就是256个种类00000000到11111111,所以目前所有录入的不包括汉字。汉字解析的ascii码号太多,所以就不止占一个字节。

但是,计算机存储的时候用二进制,但是显示二进制的数值就再不是二进制了。内存读取他的时候又把他当作数字了,是一个占8个字节的数字。所以看一大堆二进制数据的时候会特别卡。

所以汉字、符号等都要先编码,然后才能用编码的对应号数去转成二进制,进制转换只对数字有用。

一个字节是计算机内存的最小单位,由8个二进制位组成,2个16进制组成

F=0000 1111 =15
FF=1111 1111 =255

十进制 十六进制 二进制
0 0 0000 0000
1 1 0000 0001
2 2 0000 0010
3 3 0000 0011
4 4 0000 0100
5 5 0000 0101
6 6 0000 0110
7 7 0000 0111
8 8 0000 1000
9 9 0000 1001
10 A 0000 1010
11 B 0000 1011
12 C 0000 1100
13 D 0000 1101
14 E 0000 1110
15 F 0000 1111

进制间转换方法

十进制与二进制

>>> bin(255)  #十进制转二进制
'0b11111111'

>>> int("0b11111111",2)  #二进制转十进制
255

十进制与十六进制

>>> hex(255)  #十进制转十六进制
'0xff'

>>> int("0xff",16)  #十六进制转十进制
255

八进制转换:oct(255)

括号里加什么进制数都可以变成所用方法的对应进制数

unicode

字符和unicode编号是一一对应的关系,世界上的每个字符都对应着一个unicode编号,根据编号可以进行多种编码。utf-8,utf-16,utf-32…,gbk编码等

>>> ord("中")
20013
>>> chr(20013)
'中'
>>> "中".encode("utf-8")  #汉字中utf-8编码
b'\xe4\xb8\xad'
>>> "中".encode("gbk")   #汉字中  gbk编码
b'\xd6\xd0'

b’······‘.decode()默认是utf-8来解码,如果解不出代表数据不是utf-8的

ascii比较局限于英语,所以汉字其他多种语言用unicode更好。unicode收录了所有语言,字–码值–编号,为一组统一收录。

三.Base64编码原理

概念

Base64就是一种基于64个可打印字符来表示二进制数据的方法(只能拿二进制的数据来作转换)

作用

  1. 在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。

  2. 网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。

    实例:

    • 电子邮件刚问世的时候,只能传输英文,但后来随着用户的增加,中文、日文等文字的用户也有需求,但这些字符并不能被服务器或网关有效处理,因此Base64就登场了。随之,Base64在URL、Cookie、网页传输少量二进制文件中也有相应的使用。
    • 对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。
    • 电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。

Base64编码表

文本到base64格式的转换

#ASCII码
>>> ord("M")
77
>>> ord("a")
97
>>> ord("n")
110
#ASCII转二进制
>>> bin(77)
'0b1001101'
>>> bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T o r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值