SHA1加密算法(java实现)
SHA1加密算法
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”,所以对散列值的数字签名就可以视为对此明文的数字签名。
安全散列算法SHA(Secure Hash Algorithm,SHA)是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。SHA-1,SHA-224和SHA-256适用于长度不超过2^64二进制位的消息。SHA-384和SHA-512适用于长度不超过2^128二进制位的消息。
算法原理
SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。
该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。
通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。
算法Java实现
public class SecuritySHA1Utils {/*** @Comment SHA1实现* @Author Ron* @Date 2017年9月13日 下午3:30:36* @return*/public static String shaEncode(String inStr) throws Exception {MessageDigest sha = null;try {sha = MessageDigest.getInstance("SHA");} catch (Exception e) {System.out.println(e.toString());e.printStackTrace();return "";}byte[] byteArray = inStr.getBytes("UTF-8");byte[] md5Bytes = sha.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++) {int val = ((int) md5Bytes[i]) & 0xff;if (val < 16) {hexValue.append("0");}hexValue.append(Integer.toHexString(val));}return hexValue.toString();}public static void main(String args[]) throws Exception {String str = new String("amigoxiexiexingxing");System.out.println("原始:" + str);System.out.println("SHA后:" + shaEncode(str));}
}
但是在实际的应用中,我们可以直接引入org.apache.commons.codec.digest.DigestUtils,然后按照如下方法调用加密即可。
/**
* @Comment SHA1加密密码
* @Author Ron
* @Date 2017年9月12日 下午2:46:31
* @return
*/
public static String encodePassword(String psw) {if(StringUtils.isEmpty(psw)){return null;}else{return DigestUtils.sha1Hex(psw);}
}
原文地址: 7、SHA1加密算法_Ron.Zheng-CSDN博客_sha1加密
SHA1加密算法(java实现)相关推荐
- 手写SHA1加密算法(Java版)
开发微信公众号过程中,需要使用sha1加密算法与微信api对接,特此学习下sha1算法的实现. 1:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital ...
- 【国产加密算法-java实现SM3】
国产加密算法-java实现SM3 一.国产加密算法介绍 国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2).SM2.SM3.SM4.SM7.SM9.祖冲之密码算法(ZUC)那等等. 其 ...
- 7、SHA1加密算法
SHA1加密算法 SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用.该算法的思想是接收一段明文,然后以一种不可逆的方式将它转 ...
- iOS sha1加密算法
最近在项目中使用到了网络请求签名认证的方法,于是在网上找关于OC sha1加密的方法,很快找到了一个大众使用的封装好的方法,以下代码便是 首先需要添加头文件 #import<CommonCryp ...
- python实现sha1加密算法
本文主要记录一下 python实现sha1的封装过程. 目录 一.程序源码 二.调用测试 一.程序源码 """ 使用sha1加密算法,返回str加密后的字符串 " ...
- AES加密算法 Java与Python跨平台实现
AES加密算法 Java与Python跨平台实现 什么是AES Java的实现 Python的实现 结果 什么是AES Note: 网上有很多实现代码但是鱼龙混杂,笔者摸索了半天,实现了AES加密文本 ...
- SHA1加密算法的使用
SHA1加密算法的使用如下: private static String sha1(String src) {try {//获取一个加密对象MessageDigest md = MessageDige ...
- 如何应对SHA-1加密算法升级为SHA-256
经过权威机构证实,sha1加密算法的不安全性越来越高,sha指纹造假成本越来越低,随即微软.谷歌等IT巨头相继发布弃用sha1加密算法声明,第三方认证机构自2016年1月1日起,将全面停止签发SHA1 ...
- 微信键盘正式发布;马斯克就是否辞去推特董事发起投票;SHA-1 加密算法将被淘汰|极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
最新文章
- Linux下Tomcat添加为系统服务
- 何时使用hadoop fs、hadoop dfs与hdfs dfs命令
- python魔法方法与函数_在Python中画图(基于Jupyter notebook的魔法函数)
- RocketMQ写入数据报错RemotingTooMuchRequestException: sendDefaultImpl call timeout
- 基础管理薄弱服装企业如何实施ERP
- 2017.05.01
- 认知智能,AI 的下一个十年 | AI Procon 2020
- android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...
- Emacs中打造强大的Python IDE
- 演练:使用 SQL Server CE 数据库
- HTML +CSS 制作个人简历
- 淘宝 京东 拼多多 唯品会返利 公众号开发
- r 语言 html,r语言出现加号
- pascal语言基础(一)
- java压缩图片thumbnails_Java压缩图片、减小图片文件体积大小,Thumbnails使用教程...
- 谢逸计算机网络,第一届中国计算机实践教育学术会议在南京成功举办
- ESXi主机从6.7升级到ESXi 7.0.3后无法识别Emulex LPe12000 HBA卡
- dhcp服务器怎么设置虚拟网段,配置DHCP服务器不同网段分配ip
- 提取Excel中文字链接地址
- android代码查找快捷键是什么,Android Studio搜索功能(查找功能)及快捷键图文详解(示例代码)...