博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SHA-256 算法-java实现
阅读量:2204 次
发布时间:2019-05-03

本文共 1821 字,大约阅读时间需要 6 分钟。

SHA安全加密标准,是至今世界上使用最广泛且安全的压缩算法之一,随着密码学研究的不断深入和计算机技术的快速发展,SHA-256算法得到全面推广应用。

java代码实现:

 

package com.caojiulu;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class Main {	public static void main(String[] args) {	}	public static String getSHA256StrJava(String str) {		MessageDigest messageDigest;		String encodeStr = "";		try {			messageDigest = MessageDigest.getInstance("SHA-256");			messageDigest.update(str.getBytes("UTF-8"));			encodeStr = byte2Hex(messageDigest.digest());		} catch (NoSuchAlgorithmException e) {			e.printStackTrace();		} catch (UnsupportedEncodingException e) {			e.printStackTrace();		}		return encodeStr;	}	private static String byte2Hex(byte[] bytes) {		StringBuffer stringBuffer = new StringBuffer();		String temp = null;		for (int i = 0; i < bytes.length; i++) {			temp = Integer.toHexString(bytes[i] & 0xFF);			if (temp.length() == 1) {				// 1得到一位的进行补0操作				stringBuffer.append("0");			}			stringBuffer.append(temp);		}		return stringBuffer.toString();	}	public static String encodeBySHA256(String str) {		if (str == null) {			return null;		}		try {			MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");			messageDigest.reset();			messageDigest.update(str.getBytes());			return getFormattedText(messageDigest.digest());		} catch (Exception e) {			return "";		}	}	private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',			'e', 'f' };	private static String getFormattedText(byte[] bytes) {		int len = bytes.length;		StringBuilder buf = new StringBuilder(len * 2);		// 把密文转换成十六进制的字符串形式		for (int j = 0; j < len; j++) {			buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);			buf.append(HEX_DIGITS[bytes[j] & 0x0f]);		}		return buf.toString();	}}

 

转载地址:http://rxyyb.baihongyu.com/

你可能感兴趣的文章
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
Spring源码剖析7:AOP实现原理详解
查看>>
Spring源码剖析8:Spring事务概述
查看>>
Spring源码剖析9:Spring事务源码剖析
查看>>
重新学习Mysql数据库1:无废话MySQL入门
查看>>
探索Redis设计与实现2:Redis内部数据结构详解——dict
查看>>
探索Redis设计与实现3:Redis内部数据结构详解——sds
查看>>
探索Redis设计与实现4:Redis内部数据结构详解——ziplist
查看>>
探索Redis设计与实现6:Redis内部数据结构详解——skiplist
查看>>
探索Redis设计与实现5:Redis内部数据结构详解——quicklist
查看>>