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散列算法 将任意字符串转化为32位的散列值
Rivest开发出技术上更为趋近成熟的md5算法。它在MD4的基础上增加了"安全-带子"(safety-belts)的概念。虽然MD5比MD4复杂度大一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法...
MD5散列算法是一种广泛使用的密码学散列函数,由美国计算机科学家罗纳德·李维斯特(Ronald Rivest)在1991年设计。它的全称是Message-Digest Algorithm 5,主要用于产生固定长度(128位,通常以32位十六进制数表示...
- **MD5**(Message Digest Algorithm 5):是由Rivest在1991年设计的一种散列算法,输出128位的散列值。虽然早期广泛使用,但由于安全性问题,现在已被更安全的算法所取代。 - MD5的基本流程包括填充输入消息、...
### SHA(安全散列算法) #### 一、概述 安全散列算法(Secure Hash Algorithm,简称SHA)是一种广泛应用于信息安全领域的数据加密算法。它最初由美国国家标准与技术局(National Institute of Standards and ...
本资源包含六种常见的散列算法的C++源代码实现,包括CRC32、MD5、SHA-1、SHA-256、SHA-512以及Tiger-192。这些算法各有特点,适用于不同的应用场景。 1. CRC32(Cyclic Redundancy Check,循环冗余校验): CRC32是...
总结来说,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...
js md5加密,$.md5(String)返回十六进制数,支持中文
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散列加密算法是一种广泛应用于信息安全领域的强效工具,主要功能是将任意长度的数据转化为固定长度的摘要信息。这个算法由Ronald L. Rivest在1991年提出,是早期的MD4算法的加强版。MD5全称为Message-Digest ...
认证散列算法(如MD5和SHA),是用于创建数据指纹的关键工具。这些算法可以将任意长度的数据转化为固定长度的摘要,使得即使微小的变化也会导致完全不同的散列值。安全的散列算法应具备以下特点: 1. 输入数据长度...
MD5算法是RSA数据安全公司提出的一种散列算法,它能将任意长度的消息转换成一个固定长度(通常为128位)的“指纹”或摘要。这种算法在网络安全、密码学以及各种需要数据完整性检查的场景中广泛使用。本文档提供了一...
MD5的Verilog实现代码,可用
MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,它能够将任意长度的数据转换为一个固定长度(通常是128位)的十六进制字符串。这种转换通常被称为“摘要”或“哈希值”。MD5的主要用途包括数据完整性...
### 安全散列算法SHA-1详细介绍 #### 一、SHA及SHA-1概述 1993年,美国国家标准局(NIST)公布了安全散列算法SHA,并将其列为联邦信息处理标准(FIPS 180 Secure Hash Standard, SHS)。此标准规定必须采用SHS来进行...
MD5(Message-Digest Algorithm 5,报文摘要算法5)是一种广泛应用于信息安全领域的散列算法,它能够将任意长度的信息转换成一个固定长度(通常是128位)的摘要。MD5算法由Rivest于1991年提出,是在MD4基础上改进而...
远程服务使用已使用加密弱散列算法(例如MD2,MD4,MD5或SHA1) 签名的SSL证书链。已知这! 攻击者可以利用此方法生成具有相同数字签名的另一个证书,允许攻击者伪装成受影响的服务。 CVE-2004-7761
### MD5算法详解 #### 一、概述 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意...尽管MD5在某些应用场景中已经被更安全的哈希算法所取代,但它仍然是理解散列函数工作原理的重要案例之一。