MD5生成16位的字节,一个字节就是8个bit 8个二进制字符 2个16进制字符
所以用16进制来查看MD5的结果是32个字符
byte[] b = Md5Utils.md5sum("123");
System.out.println(b.length);
String resultString = byteArrayToHexString(b);
System.out.println(resultString);
输出
16
202CB962AC59075B964B07152D234B70
SHA-1比MD5的碰撞概率更低, 20位字节
public static String byteArrayToHexString(byte[] b){
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++){
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
/** 将一个字节转化成十六进制形式的字符串 */
private static String byteToHexString(byte b){
int n = b;
if (n < 0)
n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static byte[] md5sum(String s) {
MessageDigest d;
try {
d = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("MD5 algorithm not available!", e);
}
return d.digest(Bytes.toBytes(s));
}
分享到:
相关推荐
MD5散列算法是一种广泛使用的密码学散列函数,由美国计算机科学家罗纳德·李维斯特(Ronald Rivest)在1991年设计。它的全称是Message-Digest Algorithm 5,主要用于产生固定长度(128位,通常以32位十六进制数表示...
Rivest开发出技术上更为趋近成熟的md5算法。它在MD4的基础上增加了"安全-带子"(safety-belts)的概念。虽然MD5比MD4复杂度大一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法...
MD5加密算法的源代码是实现数据完整性验证和信息安全性的重要工具。它采用了一种单向哈希函数的方式,将任意长度的数据转换为一个固定长度的、独特的哈希值。这段代码的核心功能是将输入的字符串或数据块进行MD5哈希...
MD5的Verilog实现代码,可用
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全称为Message-Digest Algorithm 5(消息摘要算法5),它的设计目标是在保持计算效率的同时,确保数据的原始性,防止数据被篡改。 MD5算法的核心原理是通过一系列复杂的数学和位操作,包括加法、异或、左移等,...
总结来说,MD5是一种经典的散列算法,尽管其安全性已被削弱,但仍然在某些场景下有着广泛应用。`md_5.c`文件提供了MD5算法的源代码实现,可以帮助我们理解和使用MD5来校验数据完整性。在深入学习和使用MD5时,需要...
压缩包中的`md5.m`可能是自定义的MATLAB MD5实现,它可能包括了MD5算法的四个步骤:初始化、列混淆、行混淆和结果拼接。 `md5test.m`可能是一个测试脚本,用于验证`md5.m`函数的正确性。它可能包含计算特定输入数据...
MD5算法是RSA数据安全公司提出的一种散列算法,它能将任意长度的消息转换成一个固定长度(通常为128位)的“指纹”或摘要。这种算法在网络安全、密码学以及各种需要数据完整性检查的场景中广泛使用。本文档提供了一...
MD5散列是一种广泛应用于信息安全领域的加密算法,全称为Message-Digest Algorithm 5。它能够将任意长度的数据转化为固定长度的128位(16字节)的哈希值,通常以32位十六进制数的形式表示。在本案例中,"MD5散列类...
- **MD5**(Message Digest Algorithm 5):是由Rivest在1991年设计的一种散列算法,输出128位的散列值。虽然早期广泛使用,但由于安全性问题,现在已被更安全的算法所取代。 - MD5的基本流程包括填充输入消息、...
MD5作为一种散列算法,虽然在某些场景下仍然有其应用价值,但在安全性方面已经显示出明显的局限性。了解MD5的工作原理及其潜在的安全风险对于确保数据的安全至关重要。随着技术的发展,开发人员应该考虑采用更先进的...
Delphi版本的MD5散列算法。支持字符串和文件的MD5散列算法。
这是 Apache 的 APR1 MD5 散列算法在纯 PHP 中的测试、引用、记录和打包实现。安装作曲家.json: { " require " : { " whitehat101/apr1-md5 " : " ~1.0 " }}用 use WhiteHat101 \ Crypt \ APR1_MD5 ;// Check ...
### 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(Message-Digest Algorithm 5)是由Ron Rivest于1992年设计的一种散列算法,用于将任意长度的消息压缩成一个固定长度(128位)的散列值。这一过程是非可逆的,即无法通过散列值反推出原始消息。MD5算法主要包括...
总之,这个压缩包提供了一个基于ATL和VC7.0的MD5 COM组件的源代码,它实现了MD5散列算法,适用于需要对数据进行完整性验证的应用场景。通过理解ATL COM组件的工作原理和MD5算法,开发者可以轻松地集成这个组件到自己...