Java与JavaScript实现MD5加密示例分享
151 浏览量
更新于2024-08-30
收藏 49KB PDF 举报
本文主要分享了在JavaScript和Java中实现MD5哈希算法的两个示例,用于数据的加密和安全存储。
在编程领域,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的数据转化为固定长度的128位(16字节)散列值,通常以32位的十六进制字符串表示。MD5虽然存在安全性问题,不适用于高度安全的需求,但在很多场景下仍被用于快速校验数据完整性。
以下是Java中实现MD5哈希的代码示例:
```java
package org.bearfly.test.md5;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
public static void main(String[] args) {
System.out.println(getMd5String(""));
System.out.println(MD5("good"));
}
public final static String MD5(String s) {
// 定义十六进制字符数组
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
try {
// 将字符串转换为字节数组
byte[] btInput = s.getBytes();
// 获取MD5摘要算法的MessageDigest实例
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char[] str = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取出高4位
str[k++] = hexDigits[byte0 & 0xf]; // 取出低4位
}
return new String(str);
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
public static String getMd5String(String str) {
MessageDigest messageDigest = null;
// ...
}
}
```
在这个Java示例中,`MD5Utils`类包含了计算MD5的方法。`MD5()`方法接受一个字符串参数,将其转换为字节数组,然后使用`MessageDigest`类的`getInstance()`方法获取MD5摘要算法的实例。`digest()`方法用于计算哈希值,最终将结果转换为十六进制字符串。
JavaScript中的MD5实现可能使用第三方库,如`crypto-js`。虽然原文未提供JavaScript的示例,但通常会包括以下步骤:
1. 引入`crypto-js`库。
2. 调用`CryptoJS.MD5()`函数,传入要加密的字符串。
3. 将返回的哈希值转换为十六进制字符串。
请注意,由于JavaScript是客户端语言,其MD5实现通常用于前端的轻量级安全处理,而Java的MD5实现则更常用于服务器端,因为服务器端可以处理更复杂的安全需求。
在实际应用中,MD5哈希常常用于密码存储,用户数据的完整性校验,以及文件校验等场景。然而,由于MD5碰撞攻击的可能性,现在更推荐使用SHA-256或更强的哈希函数来提高安全性。
2019-01-23 上传
2014-08-04 上传
170 浏览量
2023-05-31 上传
2023-08-26 上传
2024-02-05 上传
2023-02-13 上传
2023-05-31 上传
2023-03-31 上传
weixin_38656226
- 粉丝: 3
- 资源: 928
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能