在Java中的SHA-256哈希加密

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

SHA-256定义:
在密码学中,SHA是加密散列函数,它将输入作为20字节并以十六进制数形式呈现散列值,大约40位数。

SHA-256消息摘要类:
要在Java中计算加密散列值,请在java.security包下使用MessageDigest类。

MessagDigest类提供以下加密哈希函数来查找文本的哈希值,它们是:

  1. MD5
  2. SHA-1
  3. SHA-256

此算法在名为getInstance()的静态方法中初始化。选择算法后,它会计算摘要值并以字节数组的形式返回结果。

使用BigInteger类,它将结果字节数组转换为符号幅度表示。此表示形式将转换为十六进制格式以获取MessageDigest

例子:

HashCode Generated by SHA-256 for:

breakyizhan : 56ada93a5a17f0f0ebe0dbea116e90e8581cf236adee96434007b13c0c47710

hello world : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

在Java中的SHA-256哈希加密的例子

import java.math.BigInteger; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

// Java program to calculate SHA hash value 

class GFG { 
	public static String getSHA(String input) 
	{ 

		try { 

			// Static getInstance method is called with hashing SHA 
			MessageDigest md = MessageDigest.getInstance("SHA-256"); 

			// digest() method called 
			// to calculate message digest of an input 
			// and return array of byte 
			byte[] messageDigest = md.digest(input.getBytes()); 

			// Convert byte array into signum representation 
			BigInteger no = new BigInteger(1, messageDigest); 

			// Convert message digest into hex value 
			String hashtext = no.toString(16); 

			while (hashtext.length() < 32) { 
				hashtext = "0" + hashtext; 
			} 

			return hashtext; 
		} 

		// For specifying wrong message digest algorithms 
		catch (NoSuchAlgorithmException e) { 
			System.out.println("Exception thrown"
							+ " for incorrect algorithm: " + e); 

			return null; 
		} 
	} 

	// Driver code 
	public static void main(String args[]) throws NoSuchAlgorithmException 
	{ 
		System.out.println("HashCode Generated by SHA-256 for:"); 

		String s1 = "breakyizhan"; 
		System.out.println("\n" + s1 + " : " + getSHA(s1)); 

		String s2 = "hello world"; 
		System.out.println("\n" + s2 + " : " + getSHA(s2)); 
	} 
} 

输出:

HashCode Generated by SHA-256 for:

breakyizhan : 56ada93a5a17f0f0ebe0dbea116e90e8581cf236adee96434007b13c0c47710

hello world : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

应用:

  1. 加密
  2. 数据的完整性
  •   本文标题:在Java中的SHA-256哈希加密 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/6763.html
    扫描二维码添加微信 
  • ,领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘优惠券!添加微信后,分享淘宝选中的机械键盘给淘宝机器人即可领取!
    支持我们,就用微信淘宝!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读