`

md 散列算法

 
阅读更多
package com.dream.util;

import java.security.MessageDigest;
import java.security.Security;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.MD4Digest;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

import junit.framework.TestCase;

/**
 * @author zxg
 * @see MD加 消息摘要算法 MD2,MD4 128位摘要信息
 */
public class MDTest extends TestCase {
	public static String str = "zxg is a boy";

	/**
	 * jdk MD5
	 */
	public void testJdkMD5() throws Exception {
		MessageDigest md = MessageDigest.getInstance("MD5");
		byte[] md5bytes = md.digest(str.getBytes());
		System.out.println(Hex.encodeHexString(md5bytes));
	}

	/**
	 * jdk MD2
	 */
	public void testJdkMD2() throws Exception {
		MessageDigest md = MessageDigest.getInstance("MD2");
		byte[] md2bytes = md.digest(str.getBytes());
		System.out.println(Hex.encodeHexString(md2bytes));
	}

	/**
	 * jdk MD4
	 */
	public void testbcMD4() throws Exception {
		Digest digest = new MD4Digest();
		digest.update(str.getBytes(), 0, str.getBytes().length);
		byte[] md4Bytes = new byte[digest.getDigestSize()];
		digest.doFinal(md4Bytes, 0);
		System.out.println(org.bouncycastle.util.encoders.Hex
				.toHexString(md4Bytes));
	}

	/**
	 * bc MD5
	 */
	public void testbcMD5() throws Exception {
		Digest digest = new MD5Digest();
		digest.update(str.getBytes(), 0, str.getBytes().length);
		byte[] md5Bytes = new byte[digest.getDigestSize()];
		digest.doFinal(md5Bytes, 0);// 获取字节从0开始取
		System.out.println(org.bouncycastle.util.encoders.Hex
				.toHexString(md5Bytes));
	}

	/**
	 * bc MD4 2
	 */
	public void testbcMD42() throws Exception {
		Security.addProvider(new BouncyCastleProvider());
		MessageDigest md = MessageDigest.getInstance("MD4");
		byte[] md4Bytes = md.digest(str.getBytes());
		System.out.println(Hex.encodeHexString(md4Bytes));

	}

	/**
	 * apache MD5
	 */
	public void testccMD5() throws Exception {
		System.out.println(DigestUtils.md5Hex(str.getBytes()));
	}

	/**
	 * apache MD4
	 */
	public void testccMD4() throws Exception {
		System.out.println(DigestUtils.md2Hex(str.getBytes()));
	}
}

 

分享到:
评论

相关推荐

    MD5散列算法

    MD5散列算法 将任意字符串转化为32位的散列值

    MD5(散列算法)加密

    Rivest开发出技术上更为趋近成熟的md5算法。它在MD4的基础上增加了"安全-带子"(safety-belts)的概念。虽然MD5比MD4复杂度大一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法...

    SHA(安全散列算法)

    安全散列算法 SHA (即Secu re Hash AIgorlthm 安全散列算法)是一种 常用的数据加密算法.它由美国国家标准与技术局(NatlonaI InstItute of Standards and TechnoIogy)于1 993年作为联邦信息 处理标准公布(即第一代...

    MD5散列算法, C语言描述

    转 MD5散列算法, C语言描述. md5.h md5.cpp

    散列算法类库 (修正版)

    包含 SHA-1,SHA-256,SHA-512,MD-5,CRC-32,Tiger-192 六种常见散列算法的库。xxx_f 包含计算函数,具有断点续算功能,类名不包括 _f 的仅包含内存操作及比较函数。 用法:反复调用 void append(uint8_t *src, uint64...

    jsmd5散列算法

    js md5加密,$.md5(String)返回十六进制数,支持中文

    md5散列值算法

    c++源文件,求任意序列的Md5. int F(unsigned int x,unsigned int y,unsigned int z); int G(unsigned int x,unsigned int y,unsigned int z); int H(unsigned int x,unsigned int y,unsigned int z); int I...

    md_5.rar_md-5_散列算法

    散列算法 MD5函数 设计一个无碰撞的压缩函数。

    安全散列算法SHA-1介绍

    1993 年美国国家标准局(NIST)公布了安全散列算法SHA,SHA 已经被美国政府核准作为标准,即FIPS 180 Secure Hash Standard (SHS),FIPS 规定必须用SHS 实施数字签名算法,该算法主要是和数字签名算法(DSA)配合的...

    Delpi版的MD5算法

    Delphi版本的MD5散列算法。支持字符串和文件的MD5散列算法。

    常用散列算法类源代码(6种)

    CRC32、MD-5、SHA-1、SHA-256、SHA-512、Tiger-192,很容易改写为相对应的C代码(一大堆同前缀函数很烦人……)

    ssl证书生成工具(sha256算法)

    远程服务使用SSL证书链,该证书链已使用加密弱哈希算法(例如MD2、MD4、MD5或SHA1)签名。这些签名算法很容易受到碰撞攻击。攻击者可以利用这一点生成另一个具有相同数字签名的证书,从而允许攻击者伪装成受影响的服务...

    windows下制作和应用数字签名证书全套工具

    远程服务使用已使用加密弱散列算法(例如MD2,MD4,MD5或SHA1) 签名的SSL证书链。已知这! 攻击者可以利用此方法生成具有相同数字签名的另一个证书,允许攻击者伪装成受影响的服务。 CVE-2004-7761

    HashPump, 在各种散列算法中,利用散列长度扩展攻击的工具.zip

    HashPump, 在各种散列算法中,利用散列长度扩展攻击的工具 HashPump一种利用哈希长度扩展攻击的各种哈希算法的工具。当前支持的算法:MD5,SHA1,SHA256,SHA512.帮助菜单$ hashpump -hHashPump [-h help] [-t test]...

    md5散列加密算法 强大的工具

    加密算法,增加写代码的效率。很强的算法。。。。。。。。

    浅析MD5算法

    MD5算法的全称是Message-Digest algorithm 5,是一种用于产生数字签名的单项散列算法。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式,即将一个任意长度的“字节串”通过一个不...

    Python3 hashlib密码散列算法原理详解

    要使用一个特定的散列算法,可以用适当的构造器函数或new()来创建一个散列对象。不论使用哪个具体的算法,这些对象都使用相同的API。 1.1 散列算法 由于hashlib有OpenSSL提供“底层支持”,所以OpenSSL库提供的所有...

    apr1-md5:Apache 在纯 PHP 中的 APR1-MD5 算法

    这是 Apache 的 APR1 MD5 散列算法在纯 PHP 中的测试、引用、记录和打包实现。安装作曲家.json: { " require " : { " whitehat101/apr1-md5 " : " ~1.0 " }}用 use WhiteHat101 \ Crypt \ APR1_MD5 ;// Check ...

    md5加密算法 C语言(经过测试验证完整版)

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...

    Android数据加密之SHA安全散列算法

    对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来...

Global site tag (gtag.js) - Google Analytics