java ripemd160,JAVA加解密9-信息摘要算法-RipeMD以及HmacRipeMD算法

一、简述

除了MD、SHA和MAC三大主流信息摘要算法之外,还有一些不常见的消息摘要算法。包括RipeMD系列、Tiger、Whirlpool和Gost3411算法。同时,RipeMD算法和MAC算法系列相结合,有产生了HmacRipeMD128和HmacRipeMD160两种算法。

针对这些算法进行简单介绍

1.RipeMD算法:针对MD4和MD5算法缺陷分析提出的算法。这些算法主要是针对摘要值得长度进行了区分

2.Tiger算法:号称最快的Hash算法,专门针对64为机器做优化了。其消息长度为192位

3.Whirlpool:被列入iso标准。与AES加密标准使用了相同的转化技术,极大提高了安全性,被称为最安全的摘要算法,长度为512位

4.Gost3411:信息摘要长度为256位

这些算法的实现java6都没提供。这里BouncyCastle进行了支持。其实这些算法的调用都一个样,就是换一个调用的名字而已。

二、RipeMD算法和HmacRipeMD算法系列

算法

摘要长度

备注

RipeMD128

128

BouncyCastle实现

RipeMD160

160

BouncyCastle实现

RipeMD256

256

BouncyCastle实现

RipeMD320

320

BouncyCastle实现

HmacRipeMD128

128

BouncyCastle实现

HmacRipeMD160

160

BouncyCastle实现

三、RipeMD系列算法举例(注意他们生成的摘要信息的长度)

package com.ca.test;

import java.security.MessageDigest;

import java.security.Security;

import javax.crypto.KeyGenerator;

import javax.crypto.Mac;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import org.bouncycastle.util.encoders.Hex;

/**

* RipeMD系列消息摘要组件

* 这个算法暂时只有BouncyCastle支持

* @author kongqz

* */

public class RipeMDCoder {

RipeMD128消息摘要处理///

/**

* RipeMD128消息摘要

* @param data 待处理的消息摘要数据

* @return byte[] 消息摘要

* */

public static byte[] encodeRipeMD128(byte[] data) throws Exception{

//加入BouncyCastleProvider的支持

Security.addProvider(new BouncyCastleProvider());

//初始化MessageDigest

MessageDigest md=MessageDigest.getInstance("RipeMD128");

//执行消息摘要

return md.digest(data);

}

/**

* RipeMD128Hex消息摘要

* @param data 待处理的消息摘要数据

* @return String 消息摘要

* **/

public static String encodeRipeMD128Hex(byte[] data) throws Exception{

//执行消息摘要

byte[] b=encodeRipeMD128(data);

//做十六进制的编码处理

return new String(Hex.encode(b));

}

RipeMD160消息摘要处理///

/**

* RipeMD160消息摘要

* @param data 待处理的消息摘要数据

* @return byte[] 消息摘要

你可能感兴趣的:(java,ripemd160)