信息加密之消息摘要算法的SHA

  SHA是消息摘要算法的一种实现方式,前面已经总结过MD2\4\5的实现,接下来就为大家总结一下SHA的实现。

SHA的jdk实现:

private static void SHA_JDK(){
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA");//我们可以通过SHA\SHA-1\SHA-384\SHA-256\SHA-512来获得不同的消息摘要密钥
            digest.update(src.getBytes());
            System.out.println("SHA :"+Hex.encodeHexString(digest.digest()));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

SHA的BC实现:

private static void SHA_BC(){
        Digest digest = new SHA1Digest();
        digest.update(src.getBytes(), 0, src.getBytes().length);
        byte[] shaByte = new byte[digest.getDigestSize()];
        digest.doFinal(shaByte, 0);
        System.out.println("shaByte : "+Hex.encodeHexString(shaByte));
    }

对于SHA224,JAVA jdk并没有提供实现,下面是利用BC实现的方法:

private static void SHA224_BC(){
        Digest digest = new SHA224Digest();
        digest.update(src.getBytes(), 0, src.getBytes().length);
        byte[] sha224Byte = new byte[digest.getDigestSize()];
        digest.doFinal(sha224Byte, 0);
        System.out.println("sha224Byte : "+Hex.encodeHexString(sha224Byte));
    }

对于SHA224还有一种类似JDK的实现方法:

private static void SHA224_BC_JDK(){
        Security.addProvider(new BouncyCastleProvider());
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-224");
            digest.update(src.getBytes());
            System.out.println("SHA224_BC_JDK :"+Hex.encodeHexString(digest.digest()));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

最后简单介绍一下CC的SHA实现:

private static void SHA_CC_Byte(){
		System.out.println("SHA_CC_Byte_SHA1 : "+DigestUtils.sha1Hex(src.getBytes()));
		System.out.println("SHA_CC_Byte_SHA256 : "+DigestUtils.sha256Hex(src.getBytes()));
		System.out.println("SHA_CC_Byte_SHA384 : "+DigestUtils.sha384Hex(src.getBytes()));
		System.out.println("SHA_CC_Byte_SHA512 : "+DigestUtils.sha512Hex(src.getBytes()));
	}

	private static void SHA_CC(){
		System.out.println("SHA_CC_SHA1 : "+DigestUtils.sha1Hex(src));
		System.out.println("SHA_CC_SHA256 : "+DigestUtils.sha256Hex(src));
		System.out.println("SHA_CC_SHA384 : "+DigestUtils.sha384Hex(src));
		System.out.println("SHA_CC_SHA512 : "+DigestUtils.sha512Hex(src));
	}

  到这里SHA的实现总结完毕。

时间: 2024-11-05 03:12:06

信息加密之消息摘要算法的SHA的相关文章

信息加密之消息摘要算法的MAC

MAC是消息摘要算法的第三种实现方式,另外两种方式分别为:MD2\4\5.SHA. MAC的jdk实现:1.默认密钥方式 private static void MAC_JDK(){ try { KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");//初始化KeyGenerator SecretKey secretKey = keyGenerator.generateKey();//产生密钥 byte[] ke

第四章 消息摘要算法--SHA

注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第6章“验证数据完整性--消息摘要算法” 4.1.SHA 原理:消息摘要长度(可以定量为加密后的字符串的长度)越长,安全性越高 MD5:128位二进制摘要(32位16进制字符串)(已破解) SHA1:160位二进制摘要(40位16进制字符串)(已破解) SHA256:256位二进制摘要(64位16进制字符串)(常用,在spring security中也有使用到) 实现方式: Commons Codec(“CC”,最推荐,因为封装了J

密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)

Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest).它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生.如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了.因此消息摘要保证了消息的完整性.消息摘要采用单向Hash 函数将需加密 的明文"摘要"成一串128bit的密文,这一串密文亦称为数字指纹(

MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)

MD5 编辑 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992). MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑

消息摘要算法-HMAC算法

一.简述 mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMAC算法.关于hmac算法的详情可以参看RFC 2104(http://www.ietf.org/rfc/rfc2104.txt),这里包含了HmacMD5算法的C语言实现. 这里需要说明的是经过mac算法得到的摘要值也可以使用十六进制编码表示,其摘要值得长度与实现算法的摘要值长度相同.例如 Hmac

消息摘要算法

消息摘要算法: 1)MD(Message Digest)消息摘要 2)SHA(Secure Hash Algorithm) 安全散列算法 3)  MAC(Message Authentication Code)消息认证码 消息摘要算法主要作用是:验证数据的完整性 消息摘要算法是数字签名的核心算法

Apache Commons Codec 与消息摘要算法(hash算法)

首先我们要明白 Codec 是什么含义.它是 Coder + decoder = Codec,也就是编码器解码器.即是编码器,也是解码器. 官网地址:http://commons.apache.org/proper/commons-codec/ Apache Commons Codec (TM) software provides implementations of common encoders and decoders such as Base64, Hex, Phonetic and U

常用消息摘要算法介绍

消息摘要算法 介绍: 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法或散列算法. 消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文.(摘要可以比方为指纹,消息摘要算法就是要得到文件的唯一职位) 特点: 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的.

加解密---消息摘要算法

1.概述 消息摘要算法特征:加密过程不需要秘钥.加密后的数据无法被解密 2.消息摘要算法 1.1 MD(Message Digest) MD家族(128位摘要信息) package com.exiuge.mytest; import org.apache.commons.codec.binary.Hex; import java.security.MessageDigest; public class JdkMD5 { private static String src="hello,rose&