`

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算法...

    MD5散列算法, C语言描述

    MD5散列算法是一种广泛使用的密码学散列函数,由美国计算机科学家罗纳德·李维斯特(Ronald Rivest)在1991年设计。它的全称是Message-Digest Algorithm 5,主要用于产生固定长度(128位,通常以32位十六进制数表示...

    认证及散列算法

    - **MD5**(Message Digest Algorithm 5):是由Rivest在1991年设计的一种散列算法,输出128位的散列值。虽然早期广泛使用,但由于安全性问题,现在已被更安全的算法所取代。 - MD5的基本流程包括填充输入消息、...

    SHA(安全散列算法)

    ### SHA(安全散列算法) #### 一、概述 安全散列算法(Secure Hash Algorithm,简称SHA)是一种广泛应用于信息安全领域的数据加密算法。它最初由美国国家标准与技术局(National Institute of Standards and ...

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

    本资源包含六种常见的散列算法的C++源代码实现,包括CRC32、MD5、SHA-1、SHA-256、SHA-512以及Tiger-192。这些算法各有特点,适用于不同的应用场景。 1. CRC32(Cyclic Redundancy Check,循环冗余校验): CRC32是...

    md_5.rar_md-5_散列算法

    总结来说,MD5是一种经典的散列算法,尽管其安全性已被削弱,但仍然在某些场景下有着广泛应用。`md_5.c`文件提供了MD5算法的源代码实现,可以帮助我们理解和使用MD5来校验数据完整性。在深入学习和使用MD5时,需要...

    散列算法类库 (修正版)

    包含 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...

    MD5散列算法/MD5哈希

    MD5加密算法的源代码是实现数据完整性验证和信息安全性的重要工具。它采用了一种单向哈希函数的方式,将任意长度的数据转换为一个固定长度的、独特的哈希值。这段代码的核心功能是将输入的字符串或数据块进行MD5哈希...

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

    MD5散列加密算法是一种广泛应用于信息安全领域的强效工具,主要功能是将任意长度的数据转化为固定长度的摘要信息。这个算法由Ronald L. Rivest在1991年提出,是早期的MD4算法的加强版。MD5全称为Message-Digest ...

    ch数字签名与认证散列算法实用PPT学习教案.pptx

    认证散列算法(如MD5和SHA),是用于创建数据指纹的关键工具。这些算法可以将任意长度的数据转化为固定长度的摘要,使得即使微小的变化也会导致完全不同的散列值。安全的散列算法应具备以下特点: 1. 输入数据长度...

    MD5 算法的Java Bean

    MD5算法是RSA数据安全公司提出的一种散列算法,它能将任意长度的消息转换成一个固定长度(通常为128位)的“指纹”或摘要。这种算法在网络安全、密码学以及各种需要数据完整性检查的场景中广泛使用。本文档提供了一...

    基于fpga实现的MD5散列算法

    MD5的Verilog实现代码,可用

    md5算法java

    MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,它能够将任意长度的数据转换为一个固定长度(通常是128位)的十六进制字符串。这种转换通常被称为“摘要”或“哈希值”。MD5的主要用途包括数据完整性...

    安全散列算法SHA-1介绍

    ### 安全散列算法SHA-1详细介绍 #### 一、SHA及SHA-1概述 1993年,美国国家标准局(NIST)公布了安全散列算法SHA,并将其列为联邦信息处理标准(FIPS 180 Secure Hash Standard, SHS)。此标准规定必须采用SHS来进行...

    MD5算法的过程分析(C实现)

    MD5(Message-Digest Algorithm 5,报文摘要算法5)是一种广泛应用于信息安全领域的散列算法,它能够将任意长度的信息转换成一个固定长度(通常是128位)的摘要。MD5算法由Rivest于1991年提出,是在MD4基础上改进而...

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

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

    md5算法流程图

    ### MD5算法详解 #### 一、概述 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意...尽管MD5在某些应用场景中已经被更安全的哈希算法所取代,但它仍然是理解散列函数工作原理的重要案例之一。

Global site tag (gtag.js) - Google Analytics