密码学算法及应用(一)
来源:互联网 发布:codecademy python 编辑:程序博客网 时间:2024/05/22 15:24
问题
随着互联网和物联网的发展,安全性问题也显得尤为重要,关于用户信息泄露或者网站安全漏洞的报道也越来越多。
信息安全
- 本地敏感信息的机密性
-- 数据库或文件中关键字段的加密
-- 访问授权限制
- 网络传输的安全性
-- 身份的合法性
-- 通信的机密性
-- 信息的完整性
要解决这些问题,需要计算机密码学 + 授权限制 + 规章制度等各种措施去保障
网络传输过程环境更复杂,不可控性更大,所以 重点讲网络传输的安全性和怎样使用密码学算法解决此问题。
网络传输的安全性
互联网中使用最广泛的协议就是HTTP,而HTTP是不安全的存在的问题。
-- 网站的合法性
-- 客户端的合法性
-- 通信的机密性
-- 信息的完整性
HTTPS就是来解决这些问题的
如何解决?
- 网站的合法性 -- 证书
- 客户端的合法性 -- 证书
- 通信的机密性 – 数据加密
- 信息的完整性 – 消息认证码
实现过程需要用到各种密码学算法
密码学算法分类
- 消息编码:如BASE64
- 对称加密:DES 、3DES、AES(最新标准)
- 非对称加密:RSA、DH秘钥交换
- 摘要算法:MD类、SHA类、MAC类
- 签名算法:RSASignature、DSASignature
其中签名算法是非对称加密和摘要算法的组合应用
学习的意义
学会了这些算法,我们可以根据实际情况进行组合应用,来保证通信的安全性;不一定要全套都走HTTPS
BASE64编码
用来对二进制数据进行编码,转换成一个字符串;比如:二进制的秘钥、图片,或者url中传的字符串(变成不易被识别的字符),你可以把它理解成一个公开了秘钥的加密算法(秘钥就是BASE64的编码表)
算法 3*8 = 4*6 不够的补0
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,完全的六位填充输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。
为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。
BASE64编码表
example
hello ---> aGVsbG8=
1. hello --> 01101000 01100101 01101100 01101100 01101111
2. 补全 01101000 01100101 01101100 01101100 01101111 00000000
3. 6个bit作为一个编码单位
011010 000110 010101 101100 011011000110 111100 000000
26 6 21 4427 6 60=
a GV s bG 8 =
加密通信模型
- 密码学算法及应用(一)
- 密码学算法及应用(二)
- 《应用密码学》 欧几里得算法-Euclid
- 应用密码学(学习整理、一)
- 密码学学习记录(一)古典密码学
- 密码学简介(一)
- 密码学基础(一)
- BiDi 算法详解及应用(一)
- JAVA加密算法- 密码学概述及使用一
- 浅谈密码学(一)基础知识
- python密码学编程(一)
- 密码学基础知识(一)信息安全与密码学
- DLX算法及应用(一)DLX模板+解数独
- (一)K近邻算法及MNIST应用
- 双线性映射(密码学常用算法)
- java密码学架构指南(一)
- 实验吧密码学WriteUp(一)
- 密码学总结(一) 数学常识
- 收敛域、收敛区间与收敛半径
- 剑指Offer(面试题49-50)
- USB协议分析仪在实际USB连通中的作用
- CSS3 中 3D 变换效果概述
- level 遍历116. Populating Next Right Pointers in Each Node
- 密码学算法及应用(一)
- 07-图4 哈利·波特的考试 (25分)
- vi编译器的学习
- Android如何让你的第三方库可以compile的形式被使用
- 深入分析Java ClassLoader原理
- Java Web day(3)之Tomcat及Http协议详细介绍
- POJ1426 Find The Multiple(DFS)
- C语言printf和scanf函数
- Canvas 简介