网络安全 -------- 加解密
Crypto
1. 常见的加密方式
不可逆
- 单项散列函数:MD5、SHA 等
可逆
- 对称加密:DES、3DES、AES 等
- 非对称加密:RSA 等
单项散列函数(也被称为:消息摘要、哈希函数)
可以根据消息内容计算出散列值
散列值的长度与消息长度无关,无论消息是 1bit、10m、100G,单项散列函数都会计算出固定长度的散列值
根据任意长度,计算出固定长度的散列值
计算速度快
消息不通,散列值不通
输出的散列值也被称为:消息摘要,指纹
常见的几种单项散列函数
md4、md5
- 产生128bit的散列值,MD 就是 Message Digest (消息摘要)的缩写,目前已经不安全
SHA-1
产生 160bit 的散列值,目前已经不安全
SHA-2
SHA-256、SHA-384、SHA-512,散列值长度分别是 256、384、512 bit
SHA-3 全新标准
应用场景
- 通过单项散列函数,将文件生成一个散列值,如果散列值相等就说明文件内容没有变化。比如下载一个软件时,会有一个 md5 文件,可以将下载的软件生成 md5,然后对比下载下来的与自己本地生成的,相等则下载的软件是完整的
- 输入密码给服务器时,将密码通过散列函数加密后发给服务器,服务器数据库存的密码也是散列值,服务器通过对比散列值是否相等判断密码是否正确(密码丢失给时,点击忘记密码后,通过验证后直接修改密码,并不能返回旧密码)
2. 加解密
将明文加密生成密文,必须通过密钥才能解密,双方协商好使用什么加密算法
2.1 对称加密(Symmetric Cryptograp)
- 概念:加密用的密钥与解密用的密钥是相同的
- 特点:简单、加密速度快
- 常见对称加密算法
- AES
- DES
- 缺点:不安全(密钥配送问题)
- 我把加过密的内容发送给了 A,A 必须要有我使用的密钥才可以,因此必须将密钥也发给 A,此时如果有人窃听,拿到了密文、密钥,就能解密,双方通信的安全得不到保障
- 使用对称加密时,一定会遇到密钥配送问题
- 解决:事先共享,密钥不要走网络
- 非对称加密
2.2 非对称加密(Asymmetric Cryptography)
概念:加密与解密用的密钥不同
特点:安全
缺点:复杂、加解密速度慢
密钥
公钥:加密密钥,网络传播给消息发送者
私钥:解密密钥,将消息发送者通过公钥加密过的消息解密为明文,不可在网络上传播
公钥与私钥是一一对应的,不能单独生成
由公钥加密的密文,必须使用该公钥对应的私钥才能解密
2.3 混合密码系统
- 概念:将对称加密与非对称加密的优势相结合的方法
- 优点:解决了非对称加密速度慢,对称加密的密钥配送问题
- 加密策略
- 为本次通信生成一个对称加密的密钥,将明文进行非对称加密,然后将对称加密的密钥进行非对称加密(对称加密的密钥所占字节远小于明文),然后将加密后的密钥与密文结合在一起发送给对方
- 拿到两部分合在一起的密文后,使用私钥解开使用公钥加密的对称加密的密钥,得到密钥后,通过密钥解开密文
3. 数字签名
解决社么问题?
- A 给 B 发消息,A 发的内容可能被篡改、或者有人伪装成 A 发消息、或者就是 A 发的,但是 A 不承认
- 如何确定这段消息的真实性?如何识别篡改、伪装、否认?
解决方案
- 数字签名
应用场景:
- 不是为了保证机密性,是为了能够识别内容有没有被篡改
数字签名技术中,有两种行为
- 生成签名(消息发送者完成,对消息散列值进行签名)
- 验证签名(消息接收者完成)
发送方将文件通过 单项散列函数 得到一份 128 bit 的摘要,这份摘要相当于该文件的 ”指纹“,能够唯一地识别文件。(只要文件发生改动,经过单项散列函数处理后得到地摘要都会不一样,所以,文件和文件的摘要具有很强的对应关系)
然后发送方使用自己的私钥将单项散列函数生成的摘要进行加密,得到一份加密摘要
然后发送方将文件、加密的摘要发送给接收方
接收方接收后,使用发送方的公钥,将加密的摘要解开,得到 128 bit 的摘要,然后将文件进行单项散列函数,得到摘要,然后与解密出来的摘要进行对比,相等则文件完整。不相等,接收到的文件或者加密的摘要可能被篡改。
报文鉴别:消息接收者可以使用收到的公钥对加密的摘要进行解密,从而核实消息发送者对文件的签名
报文的完整性:消息接收者通过对比摘要判断消息是否完整
消息发送人不可否认:只有发送者拥有私钥,并能使用私钥产生 ”加密的摘要“,这样发送者就不能否认自己发送的消息
4. 证书(Certificate)
只要涉及到将公钥分享出去,就避免不了中间人攻击。
- 解决的问题:通过证书的方式,让消息发送者确定了公钥确实是消息接收者的
- 消息接收者将公钥发给权威机构(CA),CA 将公钥进行签名,然后将签名、接收者公钥等信息打包成证书发给消息发送者
- 消息发送者通过 CA 公钥解开签名得到公钥,然后将该公钥与证书中的公钥进行比较,相等证明该公钥确实是接收方的公钥
网络安全 -------- 加解密相关推荐
- rsa解密的应用_安全-加解密
内容概要: 加解密基本原理简介 https简介 中间人攻简介 iOS应用简介 对称 加密算法 加密密钥和解密密钥是同一把密钥K,加解密速度快,典型算法有DES.AES等. 加解秘流程 非对称 加密算法 ...
- Python实现各种加密,接口加解密不说难
Hi,大家好.我们在接口自动化测试项目中,有时候需要一些加密.今天给大伙介绍Python实现各种加密,接口加解密再也不愁. 目录 一.项目加解密需求分析 二.Base64加密 三.MD5加密 四. s ...
- AES加解密效率测试(纯软件AES128/256)--以嵌入式Cortex-M0与M3 平台为例
目录 AES256/128 纯软件加解密时间效率测试--以Cortex-M0与M3 MCU为例 一.测试环境与方法: 二.测试代码介绍(以AES256为例) 三.测试结果与抓包截图 1.主频统一设置为 ...
- CTF密码学-加解密总结
零基础学黑客,搜索公众号:白帽子左一 密码学基本简介 密码学(在西欧语文中,源于希腊语kryptós"隐藏的",和gráphein"书写")是研究如何隐密地传递 ...
- 一文了解加解密、哈希函数、MAC、数字签名、证书、CA等
引言: 哪里有信息,哪里就有信息安全问题,那么在网络安全系统中我们经常听到的加解密.哈希.数字签名.证书.CA等是怎么发展而来的呢,本篇就是从所以然的角度介绍一下现代密码系统各个部分是怎么来的(并非历 ...
- CTF在线加解密以及常用工具
初入门CTF,查找工具是最烦心的,也是最容易打消我们热情的一个环节,我把我之前用到的,记录过的一些加解密,编码,CTF工具,算法等分享给大家,希望对大家有帮助,共同为祖国网络安全贡献一份力量! 二进制 ...
- RSA,AES算法加解密
密码的前世今生 密码Cryptology,是一种混淆人们视听的一种技术.将可以被正常认知的信息转变成不可以被识别的信息.有交流就有信息,有信息的传递,自然会产生秘密,这是文明发展的必然.密码的出生自然 ...
- 加解密算法的概述和总结
加解密算法的概述和总结 一.单向散列算法 也称为Hash(哈希)算法.是一种将任意长度的消息压缩到某一固定长度(消息摘要)的函数(该过程不可逆).Hash函数可用于数字签名.消息的完整性检测.消息起源 ...
- Java加解密的艺术书摘
Java加解密的艺术 密码学常用术语 明文(Plaintext):指待加密信息.明文可以是文本文件.图片文件.二进制数据等. 密文(Ciphertext):指经过加密后的明文.密文通常以文本.二进制数 ...
最新文章
- max7219驱动共阳点阵
- 计算机的诊断策略服务怎么打开,win7系统使用诊断策略服务提示“未运行”怎么解决...
- 贝叶斯神经网络对梯度攻击的鲁棒性
- live555 源码分析:简介
- SVN本地代码未提交而被覆盖
- [bzoj1059]矩阵游戏
- 自定义View调用onDraw方法
- 计算机保研-中科大计算机
- 解决打印机共享提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
- K3 CLOUD API接口说明书V2.0
- 如何给下属布置工作?多人团队便签来帮你有效布置任务
- 使用elasticSearch实现以图搜图
- win10计算机控制面板在哪里,教您win10控制面板在哪
- Notes from Google Play | Google Play 持续助力您的应用和游戏
- java版mc植物生长条件_教程/种植紫颂果
- 边云协同的优点_与云端握手 是时候谈谈边云协同这个边缘计算新风向了
- 如何保护个人信息安全?
- 2022 WordPress Tongleer 仿微博社交主题模板
- Spark程序设计进阶
- C/C++ 中的宏 (macros) 与宏展开的可视化显示
热门文章
- 青岛市海鲜饭店餐饮油烟污染如何解决?-安科瑞餐饮油烟监测系统
- 苹果怎么测是原装屏_实心的就是原装屏,空心的就是国产屏?
- C语言查询成绩前三名的女生,如何查找每个班级总成绩前3名的学生?
- CIA-SSD那点事儿
- 100本名著浓缩成的100句话【深度好文】
- JS 返回上一页判断
- MySQL --- 19♪ 进阶15 TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读
- 协同控制笔记1——基础介绍及部分定义定理
- 【Linux系列】Linux下编译C/C++环境变量设置
- 【视频编码学习】AVS3参考软件HPM-4.1简单配置运行