本文简单总结几种常用的安全算法

  • 摘要算法
  • 对称加密算法
  • 非对称加密算法
  • 数字签名
  • 数字证书

web安全系列目录

  • 总结几种常见web攻击手段极其防御方式
  • 总结几种常见的安全算法

数字摘要

实现

  • 将任意长度的明文通过单向hash函数摘要成固定长度的串。 Hash(明文)-->固定长度的摘要

特点

  • 无论明文多长,计算出来的摘要长度总是固定的。hash(‘a’)和hash(‘aaaaaaaaaaa’)形成的摘要长度是一样的
  • 一般明文不同,计算出来的摘要也不同。也就是相同的明文,计算出来的摘要是一样的,不同的明文形成的摘要一般是不一样(好的hash函数不会发生碰撞)
  • 只能进行正向的消息摘要。也就是说从消息摘要中不能恢复成原来的明文。

数字摘要算法

  • md5
  • sha

md5

  • 将待加密串进行md5计算形成128比特位(32位16进制)的摘要。

    字符串:jiajun
    md5摘要:a51c0678c060ae4c4630d930fe83102c 

SHA-1

  • 将待加密串进行SHA计算后形成160比特位(40位16进制)的摘要。
  • 对比md5,摘要信息更长,运算过程更复杂,速度更慢,但相对也更加安全。

    字符串:jiajun
    SHA-1摘要:26352d75496932fd05e65724610ce1aaadf9259c 

base64不是一种加密算法而是一种编码算法

  • 将二进制数据编码成ascll码。比如说我们将图片以json的形式上传到服务器,那么可以将图片二进制数据通过base64编码转化为二进制。
  • base64是可逆的,通过解码算法可以恢复成二进制数据,所以根本不能加密。

彩虹表破解hash算法

  • 上面提到的两种数字摘要算法md5和sha-1都是不可逆算法,那么如何破解呢?彩虹表是一种破解的方式。
明文 hash算法 密文
xxx md5 xxx
xxx sha-1 xxx
  • 彩虹表破解法通过这样的一张表进行查询,比如攻击者拿到了一个用户密码密文,是通过md5算法加密的,那么他可以在这样的一张表进行查询,从而查到密码的明文。
  • 彩虹表是不断的积累的过程,表的内容不断丰富,从而破解的机率慢慢提高。
  • 如果用户的密码是常见的密码,比如说生日,攻击者知道有些用户会用生日作为密码,那么攻击者可以提前将这些生日组合进行计算,提前记录在表里面。那么在彩虹表查询很快可以查询的到密码明文。而如果密码较为复杂,如果泄露了密文,根据生成的密文在彩虹表进行查询,是很难查到的(因为表里面并没有)。这也就是为什么我们为用加盐的方法降低破解率的原因了。

对称加密

实现

  • 发送方和接收方约定一个密钥,生成加密密文发送。接收方接受后,使用相同的密钥和加密算法的逆算法进行解密。通俗将,我给小花写一封情书,然后放在一个上锁的小箱子,经过多人的,最后到达小花,小花通过相同的钥匙打开箱子。但是如果钥匙中途被人捡到,那么情书就公开了。所谓对称指的是加密解密用同一个加密密钥。

特点

  • 算法是公开的,加密速度快。
  • 一旦泄露密钥,因为算法是公开的,所以可以轻松解密。

应用分析

  • A向B发送秘密文件,这个时候可以采用对称加密算法,没有密钥者不能解密文件。
  • 如果密钥泄露那么文件可以被解密,而且随着技术的发展,如果采用穷举暴力解密也是有可能。
  • 如果A向很多人发送秘密文件,那么需要多次约定。

对称加密算法

  • DES算法,密钥64位
  • AES算法,,密钥长度之处128,192,256三种,加密强度更高。

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

非对称加密

实现

  • A向B发送消息,B先产生一个公钥和私钥,然后将公钥公开,A获得公钥。
  • 然后用公钥进行加密,然后将密文发送给B。
  • B得到后用私钥进行解密。

特点

  • 非对称加密更加复杂,所以加密解密速度没有对称加密快,但是也更加安全。

非对称加密算法

  • RSA算法

应用分析

  • 即使中途有人截获文件,因为没有私钥,并且加密算法复杂,解密是很困难的。
  • 如果A向多人发送秘密文件,那么他不需要多次约定的过程,从公钥库根据接收方的公钥分别进行加密就行。

数字签名

实现

  • A给B发送信息,A生成公钥和私钥,将公钥公开。
  • A对发送消息进行数字摘要算法,然后再通过私钥进行加密。
  • A将加密后的密文和原文发送给B
  • B收到后,对密文用公钥进行解密,获得串C,再用原文进行摘要算法,获得串D,然后对比C D。这样就能确认A的身份。
  • 数字签名:将明文进行摘要,然后再通过私钥进行加密的结果

数字签名算法

  • MD5withRSA算法
  • SHA1withRSA算法

应用分析

  • B收到A的文件,B想确认是A发送的,那么可以根据数字签名方式,根据A的公钥进行解密然后比较,因为A的私钥是不公开的,这样匹配成功就能确认是A发送的。

数字证书

实现

  • A给B发送消息,A生成公钥和私钥。
  • A将公钥,还有公钥持有者,签名算法,过期时间等信息发送给CA(数字证书认证机构)
  • CA认可信息之后,通过CA的私钥进行签名,这时候数字证书就产生了。
  • 接着A将明文,明文数字签名,和数字证书一起发送给B
  • B接受到后,通过CA的公钥进行解密,进行第一次校验,校验数字证书。
  • 验证成功后,进行第二次检验,提取数字证书中的公钥,对密文进行解密。

应用分析

  • 在数字签名的基础上,再发送一个数字证书,这样的话接收方不需要维护一个公钥库,通过CA验证后在数字证书提取,获得公钥。

总结几种常用的安全算法相关推荐

  1. 视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  2. 几种常用的经典算法(转载)

    分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...

  3. 视觉直观感受 7 种常用的排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较 ...

  4. 7 种常用的排序算法直观感受

    1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序 ...

  5. 几种常用的排序算法之JavaScript实现

    文章目录 插入排序 二分插入排序 选择排序 选择排序 冒泡排序 快速排序 堆排序 归并排序 桶排序 计数排序 插入排序 <html> <script> /* 1)算法简介插入排 ...

  6. 通过视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  7. 八种常用的排序算法(转)

    下面要讲到的8种排序都属于内部排序,既在内存中完成,主要从理论原理方面来分析的.    插入排序 ①直接插入排序 例:六个数12 15 9 20  6 31 24 用直接插入排序,如下图: 思路: 第 ...

  8. 全排列的java算法_两种常用的全排列算法(java)

    问题:给出一个字符串,输出所有可能的排列. 全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法. 1.字典序法: 如何计算字符串的下一个排列了?来考虑"926520"这个字符 ...

  9. 查找算法-4种常用的查找算法

    文章目录 一.查找算法是什么? 查找算法简介 二.查找算法介绍及实现 1.顺序查找 算法描述 代码实现: 2.二分查找/折半查找 算法描述 代码实现: 3.插值查找 算法描述 代码实现: 4.斐波那契 ...

最新文章

  1. php程序网站整站301,织梦dede怎么实现整站301
  2. debugger vsm_ProteusVSM常见问题解答
  3. SAP Fiori里的Adapt UI按钮,神出鬼没的奥秘
  4. rx.observable_使用Java 8 CompletableFuture和Rx-Java Observable
  5. 苏州大学实验报告模板C语言,苏州大学实验报告-实验flash在线编程实验
  6. 【待完成】并发包下常用到线程工具类汇总
  7. php源码安装配置,php源码安装时configure配置参数 | 学步园
  8. 作者:程学旗(1972-),男,中国科学院计算技术研究所研究员、博士生导师、副所长,中国科学院网络数据科学与技术重点实验室主任。...
  9. vue中this.$nextTick()的使用---SpringCloud Alibaba_若依微服务框架改造_ElementUI---工作笔记017
  10. 《强化学习》中的第10章:基于函数逼近的同轨策略控制
  11. 【Python】闭包Closure
  12. hi3798mv300救砖包_迪优美特V26_hi3798mv300线刷固件升级包纯净系统
  13. 搜狗输入法android德语,教你用搜狗输入法打出法语字符
  14. python3 读文件 编码_Pyhton3下的ISO8859-1编码文件的读取
  15. 苹果设备验证是否正品
  16. 统计学习导论之R语言应用(二):R语言基础
  17. mathematica动态模型的建模分析
  18. managed DLL 和 normal DLL
  19. Java 八种排序算法比较实践
  20. kafka:默认的分区策略

热门文章

  1. Log4j 入门总结
  2. Visual Studio 宏
  3. (软件工程)用例说明模板
  4. python文字游戏 生成数字菜单_pygame游戏之旅 游戏中添加显示文字
  5. as安装过程中gradle_在安装钢结构平台过程中需要注意哪些事项?
  6. centos7 mysql启动失败_Mysql主从复制
  7. redis setnx 分布式锁_Redis 分布式锁PHP
  8. mysql web备份软件_GitHub - toolzone/mysql_web_backup: mysql数据库自动备份,web网站自动备份shell脚本...
  9. 大数据技术之kafka (第 3 章 Kafka 架构深入) Zookeeper 在 Kafka 中的作用
  10. 案例分享,从0到1了解一个完整项目