sha1/md5 代码
来源:互联网 发布:linux 交叉编译ide 编辑:程序博客网 时间:2024/05/16 12:23
算法太难,我就不求甚解了,工作中的小白,这种代码拿来直接用就可以了
sha1加密
public class SHA1 { public static String getSha1(String str) { if (null == str || 0 == str.length()) { return null; } char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char[] buf = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } return new String(buf); } catch (Exception e) { return null; } }}
*
怀疑代码可用性的话,用本工具随便加密一段文字去百度一下sha1在线加密,两边结果做一下对比,就知道这段代码是不是真的sha1加密代码了
*
md5加密
public class Md5 { public static String toMD5(String inStr) { StringBuffer sb = new StringBuffer(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(inStr.getBytes()); byte b[] = md.digest(); int i; for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) sb.append("0"); sb.append(Integer.toHexString(i)); } } catch (Exception e) { return null; // e.printStackTrace(); } return sb.toString().toUpperCase(); }}
SHA-1与MD5的比较
因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
l 对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
l 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
l 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。
SHA-1停止计划
2005年,密码学家就证明SHA-1的破解速度比预期提高了2000倍,虽然破解仍然是极其困难和昂贵的,但随着计算机变得越来越快和越来越廉价,SHA-1算法的安全性也逐年降低,已被密码学家严重质疑,希望由安全强度更高的SHA-2替代它。
微软第一个宣布了SHA-1弃用计划,对于SSL证书和代码签名证书,微软设定了不同的替换时间表:
1、所有Windows受信任的根证书颁发机构(CA)从2016年1月1日起必须停止签发新的SHA-1签名算法SSL证书和代码签名证书;
2、对于SSL证书,Windows将于2017年1月1日起停止支持SHA1证书。也就是说:任何在之前签发的SHA-1证书必须替换成SHA-2证书;
3、对于代码签名证书,Windows将于2016年1月1日停止接受没有时间戳的SHA-1签名的代码和SHA-1证书。也就是说,Windows仍然接受在2016年1月1日之前使用SAH-1签名的已经加上RFC3161时间戳的代码,直到微软认为有可能出现SHA-1攻击时。
Google官方博客宣布,将在Chrome浏览器中逐渐降低SHA-1证书的安全指示,逐步停止对使用SHA-1散列算法证书的支持。近日,Chrome 39新版本 PC 端发布,在部分操作系统下,该版本浏览器中已开始出现“该网站使用的安全设置已过期” 提示,在接下来的6个月内会变得越来越严格。最终,使用了有效期至2016年的SHA-1证书的站点可能会被给予黄色警告。
Mozilla也做了同样的决定,在其对外公布近期更新计划中表示:“现在依然有不少网站使用基于 SHA-1签名的 SSL证书,所以我们决定加入微软和谷歌的阵营,认为应在 2016 年 1 月 1 日前停止发放 SHA-1 证书,在 2017 年 1 月1 日后不再信任此证书。”
引用自:http://baike.baidu.com/link?url=2-U-XWbyBtqR-YN55yYStgsZ-DGZCPruw1bK0KWqEOHFlfeRkbOcfsgI8_wHDmF4rUkBoNUQlWd9dLEnWW9gQq
**
还有一点是吾等小白容易困惑的地方,sha1和md5的结果到底是是大写还是小写?
其实没多大区别,想大写就大写,想小写就小写
**
sha1和MD5的算法可以修改么?
有人也曾经提出对加密算法中的函数或者变量进行修改,从而加强在使用原算法的安全,但是这种方法修改了原函数或者变量后,无法验证修改后算法在强度上是否跟原算法一致。(意思就是说在不修改整体算法的前提下,在算法外面还是可以加一点自己的东西的)
劳驾点个赞呗
- sha1/md5 代码
- sha1+md5
- SHA1 & MD5
- MD5+SHA1
- md5,sha1
- SHA1、MD5、DES加密
- SHA1、MD5、DES加密
- SHA1和MD5加密
- md5 & sha1 算法
- md5 sha1 deb install
- MD5 和 SHA1 加密
- MD5 Vs SHA1
- SHA1与MD5 加密算法
- 摘要算法 SHA1 MD5
- SHA1与MD5
- MD5和SHA1
- md5和sha1
- [ios2]SHA1,MD5加密
- SpringMVC学习笔记--(1)
- 【LeetCode-216】Combination Sum III
- Bootstrap 洼地
- ssh 自动登录脚本
- android 使用butterknife简化加载布局控件
- sha1/md5 代码
- __cplusplus
- 安卓开发SQlite使用执行SQL语句一些简单的处理——1.创建数据库,表和添加数据
- Java中static关键字解析以及类加载顺序例题
- vfork函数
- 《The Non-Designer's Design Book(写给大家看的设计书)》--笔记整理
- 单源点最短路径+高级搜索A*
- Servlet 工作原理解析
- Jenkins+Maven+SVN快速搭建持续集成环境