当前位置: 首页 > news >正文

建网站价格 优帮云怎么做dj网站

建网站价格 优帮云,怎么做dj网站,哔哩哔哩h5播放器,北京医疗网站建设公司排名首先介绍一下MD5,而项目中用的是MD5和盐值来确保密码的安全性; 1. md5简介 md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位…

首先介绍一下MD5,而项目中用的是MD5和盐值来确保密码的安全性;

1. md5简介
md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。

2. md5原理
md5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。文件的md5类似于人的指纹,在世界上是独立无二的,如果任何人对文件做了任何改动,其md5的值也就是对应的“数字指纹”都会发生变化。

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

md5与对称和非对称加密算法不同,这两种密码是防止信息被窃取,而摘要算法的目标是用于证明原文的完整性。

3. md5特性
1. 不可逆

没有系统有办法知道md5原来的文字是什么。

2. 具有高度的离散性

md5码具有高度的散列性,没有规律可循,哪怕原信息只有一点点的变化,比如多个空格,那么就会导致md5发生巨大变化,也可以说产生的md5码是不可预测的。

3. 压缩性

任意长度的数据,算出的md5值得长度都是固定的。

4. 弱碰撞性

已知原数据和其md5的值,想找到一个具有相同md5值得数据(即伪造数据)是非常困难的。

4. md5的用途
密码的加密存储,用户设置密码时,服务端只记录这个密码的MD5,而不记录密码本身,以后验证用户身份时,只需要将用户输入的密码再次做一下MD5后,与记录的MD5作一个比较即可验证其密码的合法性。
数字签名,比如发布一个程序,为了防止别人在你的程序里插入病毒或木马,你可以在发布这个程序的同时,公开这个程序文件的MD5码,这样别人只需要在任何地方下载这个程序后做一次MD5,然后跟公开的这个MD5作一个比较就知道这个程序是否被第三方修改过。
文件完整性验证,比如当下载一个文件时,服务器返回的信息中包括这个文件的md5,在本地下载完毕时进行md5,将两个md5值进行比较,如果一致则说明文件完整没有丢包现象。
文件上传,比如百度云实现的秒传,就是对比你上传的文件md5在百度服务器是否已经存在了。

MD5不安全的3个原因

1、字典表很大

在网上有很多md5解密网站(如:https://md5.cn/),就如同一个字典表。通过在数据库存储很多常用的密码,可以在很短的时间内查找任何哈希值的答案。这种数据库占用大量的磁盘空间,具有一定的成功率。在计算机安全领域,一些朋友需要用到MD5解密网站,通过这类型的网站,可以提高工作效率,大家可以去试试。

2、碰撞

安全的算法具有良好的抗冲突性,也就是说对于不同的单词,获得相同哈希值的可能性比较低,但是MD5的抗冲突性较低。

3、暴力攻击速度很快

蛮力攻击是通过尝试多种可能性来查找密码的一种方法,即可以猜测用户可能使用的东西(出生日期,孩子的名字,宠物的名字等),也可以尝试一切(从a,b, c到10个字符的特殊字符密码)。抵御暴力攻击的唯一方法可能是密码长度,如果您拥有40个字符长的随机密码(带有特殊字符),那么目前你的密码可能是安全的。

 

所以这里采用MD5+盐值的方法来加强密码的安全性:

首先在项目中加入hutool的依赖,我们就可以使用这个类了

  <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.5</version></dependency>

然后创建一个util工具包来存放我们的密码工具类 PasswordUtil,

接下来,我们就可以直接使用hutool里面的IdUtil生成随机盐值,然后盐值+密码再进行MD5进行进一步的加密(因为常用$符进行分隔,这里也用$进行分割)

 public static String encrypt(String password) {// 随机盐值String salt = IdUtil.simpleUUID();// 密码(md5(随机盐值+密码))String finalPassword = SecureUtil.md5(salt + password);return salt + "$" + finalPassword;}

之后,我们需要进行“解密”,,验证一下数据库中加密的密码是否达到了我们期待的结果

/*** 解密** @param password       要验证的密码(未加密)* @param securePassword 数据库中的加了盐值的密码* @return*/public static boolean decrypt(String password, String securePassword) {boolean result = false;if (StringUtils.hasLength(password) && StringUtils.hasLength(securePassword)) {if (securePassword.length() == 65 && securePassword.contains("$")) {String[] securePasswordArr = securePassword.split("\\$");// 盐值String slat = securePasswordArr[0];String finalPassword = securePasswordArr[1];// 使用同样的加密算法和随机盐值生成最终加密的密码password = SecureUtil.md5(slat + password);if (finalPassword.equals(password)) {result = true;}}}

进行测试

 public static void main(String[] args) {String password = "admin";String dbPassword = PasswordUtil.encrypt(password);System.out.println("加密密码:" + dbPassword);boolean result = PasswordUtil.decrypt("123", dbPassword);System.out.println("对比结果1:" + result);boolean result2 = PasswordUtil.decrypt("123456", dbPassword);System.out.println("对比结果2:" + result2);}

这样我们就完成了这个类似单元测试的一个密码加密工作,在以后的项目中都可以进行如此设置

http://www.yayakq.cn/news/210453/

相关文章:

  • 网站估值怎么做济南微网站开发
  • 网站优化检测如何搭建平台运营体系
  • 网站封面制作美橙极速建站系统
  • 网站开发质保金山东城市建设职业学院教务网网站
  • 惠州企业建站模板买外链有用吗
  • 网站去掉后缀html深圳外贸网站外贸网站建设
  • 常州网站建设怎么样网络推广培训资料
  • 做设计的分析图网站有哪些京紫元年深圳网站建设
  • 宁德商城网站开发设计网站 linux 服务器配置
  • pc网站做成移动网站最好的书籍设计网站
  • 江西建设职业技术学院网站专业的深圳电商app开发
  • 最好的网站建设报价代驾小程序源码
  • 昆明网站建设优化技术公司网站建设须知
  • 建立大型网站国家高新技术企业公示名单
  • 网站建设 金疙瘩计划wordpress阿里云短信
  • 租用海外服务器的网站有域名吗网站开发系统的可行性研究报告
  • 企业品牌网站建设方案沈阳核工业建设工程总公司网站
  • 怎么做免费的产品图片网站手机版oa系统下载
  • 银川建设厅网站优酷网站怎么做的
  • 建设微网站平台无锡捷搜网站建设
  • 体彩网站建设简单的英文网站模板
  • 网站建设进度规划wordpress收费下载资源
  • 网站推广策划书包括哪些点南阳企业网站制作
  • 上海市住房与城乡建设部网站西楚房产网宿迁房产网
  • 2016手机网站制作规范中文域名是网站名称吗
  • 大安移动网站建设网站建设经典文章
  • 赣州专业企业网站建设成都建模培训
  • 丹灶网站设计学网站开发跟那个专业最相近
  • 景区网站建设的意义网站开发属于什么费用
  • 外贸网站服务器选择wordpress超好看主题