首页 > 其他分享 >加解密与HTTPS(3)

加解密与HTTPS(3)

时间:2023-01-01 06:11:06浏览次数:36  
标签:Hash 加解密 SHA 算法 HTTPS 加密 加密算法 MD5

您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~


 

 

除了对称加密算法和非对称加密算法,再就是最后的一种加密算法了:不可逆加密算法。

对称加密算法和非对称加密算法在处理明文的过程中需要使用密钥,而不可逆加密算法就不需要,因为正如其名,密文都不能再转变成明文了,还要密钥干嘛呢。

不可逆加密算法的验证和其他加密方法不同,它的「解密」其实就是加密:也就是把明文再按加密算法加密一次,如果加密后的结果和密文相等,就认为解密成功(MD5的加密验证就是这么干的)。

常用的不可逆加密算法包括两种:

1、MD5

2、SHA

 

MD5全称Message-Digest Algorithm 5(消息摘要算法5),是一种Hash散列算法,MD5将任意长度的字符串变换成一个128位的大整数。理论上它是不可能被破解的,但实际上已经被清华大学和山东大学的双聘教授王小云破解了,不仅如此,王教授还顺带破解了和MD5一道,被称为HAVAL-128、 MD4和RIPEMD等国际著名密码算法,由美国国家标准技术研究院与美国国家安全局设计专门制定密码算法SHA-1也被她破解了。

 

 

 

MD5的使用极其广泛,大多数互联网应用中的用户密码加密就是用的MD5。

 

SHA全称安全散列算法(Secure Hash Algorithm),是一系列加密算法的简称,有SHA-1/2/3/224/256/384/512这一系列类别,较为常用的是SHA-2、SHA-256,早期版本的MongoDB的加密算法默认就是SHA-1,现在已经换成了SHA-2。

SHA和MD5一样,也属于Hash散列算法,将任意长度的字符串变换为长度较短、位数固定的输出序列值。

 

MD5和SHA都属于Hash算法,那到底什么是Hash算法呢?

在理解Hash算法之前,需要先澄清一个非常容易产生歧义的地方:Hash算法与Hash表。

Hash算法是一种数学函数,简单地说,就是将一串数据/信息K通过Hash函数进行转换/摘要,输出另一段固定长度但更精简的数据/信息V,作为K的「指纹」。

而Hash表是一种将「键」与「值」对应起来的数据存储结构,Java中的HashMap就是这种数据存储结构。

Hash算法的核心思想就是「散列」,什么是散列?——让数据尽可能「散开」、「排列」在不同的位置。就像这样:

 

 

 

北京五环中「散列」中不同的商家店铺,不然全挤在一个地方既拥挤又没啥生意。

所以,Hash算法的特点包括“

1、确定性:如果两个散列值(地址)不同,那么原始输入(业态)也是不同的;

2、防碰撞:即使散列值(地址都在同一幢楼)相同,原始输入(业态)也可能不同;

3、不可逆:一个散列值可能对应无数个明文,理论上并不能确切地知道原始输入,即使穷尽目前一切计算资源也不可能;

4、混淆性:原始输入有一点点微小的改变,散列值都会差别巨大,又叫雪崩性。

 

有些小伙伴可能会经常听见所谓「密码盐」,这是啥呢?

日常生活中,食盐是必不可少的,否则食物就没有味道。而前面也提过,MD5、SHA等密码加密算法已经被破解了,所以现在如果只是简单地使用MD5等加密方法,密码会很容易被破解。可以试试一些在线的MD5破解网站,例如:

 

 

 

所以,为了给MD5提供更安全的保护,可以通过在密码任意固定位置插入特定字符串,使得加密后的结果和原始加密结果不同。例如密码是e10adc3949ba59abbe56e057f20fe,那么在第八个字符之后再加入一些特殊字符「123456」后就是

e10adc3912345649ba59abbe56e057f20fe

这种插入特定字符串的过程就被称之为给密码加盐。

在早期的互联网应用中,用户表中通常只用password这个字段存储加密后的密码。在MD5被破解后,为了让MD5更安全,用户表中就新增了一个字段:Salt(盐)。Salt可以是任意字母、数字、或是字母或数字的组合,但必须是随机产生的,每个用户的Salt都不一样。一般常用用户账户名或昵称作为Salt。

验证过程是:

1、前端通过HTTP方法传输经过MD5加密后的密码PWD1

2、后端执行PWD2 = MD5(PWD1 + Salt)

3、如果PWD2 == password,那么验证通过,否则失败

这一过程各位可以自行实践。

 

 


 

 

感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

 

标签:Hash,加解密,SHA,算法,HTTPS,加密,加密算法,MD5
From: https://www.cnblogs.com/xiangwang1111/p/17017083.html

相关文章

  • Nginx 安装 SSL 配置 HTTPS 超详细完整全过程
    在Nginx或Tengine服务器上安装证书说到 ​​Nginx​​​ 服务器,个人认为最大特点就是轻量级和高性能。通过在几台不同的服务器上进行测试,发现它的并发能力特别强,并且相对......
  • node.js编写反向代理转发https
    node.js编写反向代理转发httpsconstcrypto=require("crypto");constmd5=function(str){constmd5=crypto.createHash('md5');md5.update(str);......
  • SpringBoot - HttpServletRequest 与 HttpServletResponse 常用方法
    HttpServletRequest常用方法-CSDNHttpServletResponse常用方法-CSDN......
  • 转载:调用规范stdcall、cdecl、fastcall、thiscall 、naked call的汇编理解 (https://ww
    当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作......
  • HttpSession详解
    HttpSession服务端的技术服务器会为每一个用户创建一个独立的HttpSessionHttpSession原理当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session并且生......
  • 【等保要求】东方通TongWeb中间件配置https访问
    等保整改要求如下:【数据完整性】:采用HTTP协议通信,未采取校验技术或密码技术保证重要数据在传输过程中的完整性。建议采取校验技术或密码技术保证重要数据在传输过程中的......
  • 加解密与HTTPS(2)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~近些天由于完全放开,我也从“杨过”变成了“杨康”,加之家中亲人故去,所以长久未能更新,特此致歉~   上次说了对称加密......
  • C#:https文件下载
    今天在.net4.5环境下用WebClient下载https的文件时,报错: 基础连接已经关闭:发送时发生错误。加上ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;......
  • HTTPS 钓鱼攻击:黑客如何使用 SSL 证书假装信任
    让我们回到1994年。无需翻出寻呼机或穿上法兰绒衬衫。这是第一个SSL协议诞生的一年。它由Netscape推出,以满足对称为Internet的新奇发明增加安全性的日益增长的需......
  • HTTPS 钓鱼攻击:黑客如何使用 SSL 证书假装信任
    让我们回到1994年。无需翻出寻呼机或穿上法兰绒衬衫。这是第一个SSL协议诞生的一年。它由Netscape推出,以满足对称为Internet的新奇发明增加安全性的日益增长的需......