加密工具类
package com.kaige123.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; /** * MD5文字和文件加密<br> * http://www.kaige123.com * @author 凯哥 */ public class MD5Util { //16进制 protected static char hex[] = { '0', '1', '2', '3', '4', '5', '6','7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; protected static MessageDigest messagedigest = null; static { try { //得到MD5实例 messagedigest = MessageDigest.getInstance("MD5"); } catch (Exception e) { } } //得到文件MD5钥匙 public static String getFileMD5String(File file) throws IOException { FileInputStream in = new FileInputStream(file); FileChannel ch = in.getChannel(); MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length()); messagedigest.update(byteBuffer); return bufferToHex(messagedigest.digest()); } //得到MD5字符串钥匙 public static String getMD5String(String s) { return getMD5String(s.getBytes()); } public static String getMD5String(byte[] bytes) { messagedigest.update(bytes); return bufferToHex(messagedigest.digest()); } private static String bufferToHex(byte bytes[]) { return bufferToHex(bytes, 0, bytes.length); } private static String bufferToHex(byte bytes[], int m, int n) { StringBuffer stringbuffer = new StringBuffer(2 * n); int k = m + n; for (int l = m; l < k; l++) { appendHexPair(bytes[l], stringbuffer); } return stringbuffer.toString(); } private static void appendHexPair(byte bt, StringBuffer stringbuffer) { char c0 = hex[(bt & 0xf0) >> 4]; char c1 = hex[bt & 0xf]; stringbuffer.append(c0); stringbuffer.append(c1); } }
测试类
package com.kaige123.util; import java.io.File; import java.io.IOException; /** * 测试类 * @author 凯哥 */ public class Test { public static void main(String[] args) throws IOException { //得到字符串MD5 String md5str=MD5Util.getMD5String("凯哥是个胖子"); System.out.println(md5str); //得到文件的MD5 String filemd5str=MD5Util.getFileMD5String(new File("c:/kaige/a.txt")); System.out.println(filemd5str); } }
相关推荐
文件里包含使用MD5加密算法获取文件的MD5校验码的代码,也包含MD5加密字符串的代码
可直接调用的java类 可对文件加密 可对字符串加密 当作service直接使用 很方便
Java字符串加密是信息安全领域中的一个重要话题,特别是在存储和传输敏感数据时。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转换为固定长度的摘要,通常是一个32位的十六...
2. **定义类和方法**:创建`ZgjGetMD5`类,并在其中定义了`getMD5`方法用于生成文件的MD5摘要,以及辅助方法`byteToHexString`用于将字节数组转换为十六进制字符串表示形式。 3. **生成MD5摘要**: - 使用`...
### 使用MD5与SHA算法对字符串加密的方法 #### 原理概述 无论是MD5还是SHA算法,其核心都是将输入的字符串通过一系列复杂的计算过程转换成一个固定长度的散列值。这个散列值具有以下特点: - **唯一性**:不同的...
这个"MD5 Hash 字符串加密小工具"是针对字符串进行MD5加密处理的一个便捷工具,主要应用于数据校验、密码存储等方面。 在IT行业中,MD5加密通常用于以下几个场景: 1. **数据完整性检查**:当下载文件后,可以通过...
用户只需提供待加密的字符串,批处理文件将自动调用Java程序计算MD5值并显示结果。 总的来说,这个“windows下MD5加密工具bat文件”提供了一种简单便捷的方式,在Windows环境中利用Java进行MD5加密。用户无需了解...
本程序是本人综合一些加密解密算法,写成的加密解密算法类 其中包括对字符串加密解密、文件加密解密 加密方法有:DES,RC2,Rijndael,TripleDES,C#与java默认的DES加密算 法接口,MD5加密算法 vs2008 C# 源码
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的信息映射为一个固定长度的摘要值,通常是32位的十六进制字符串。MD5在信息安全领域扮演着重要的角色,常用于数据校验、密码存储等...
接着,通过循环将每个字节转换为两位的十六进制字符串,拼接成最终的32位MD5值。 如果要生成"36位MD5加密字符",我们需要进一步处理这个哈希值,例如添加分隔符或者使用其他字符集。但请注意,36个字符无法直接表示...
首先,需要创建一个MD5实例,然后更新要加密的字节数组,最后获取并转换成十六进制字符串。 ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public String ...
总之,Java中的字符串加密涉及到多种哈希和加密算法,它们各有优缺点。开发者应根据需求选择合适的算法,并遵循最佳实践,如使用加盐的哈希、强密钥管理和定期更新加密策略,以提高系统的安全性。
开发者可以将其导入项目中,通过调用相关API实现对字符串、文件等进行MD5加密。通常,它会包含以下几个关键组件: - `MessageDigest` 类:这是Java标准库中的类,用于生成各种消息摘要,包括MD5。 - `MD5Util` 类:...
2. **字符串到MD5**:对于字符串的MD5加密,首先需要将字符串转换成字节流,然后应用MD5算法。MD5算法对这些字节进行多次迭代计算,最后得到一个16字节的摘要,再以16进制形式展示,即32个字符的字符串。 3. **代码...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换为固定长度的输出,通常是32位的十六进制字符串。在IT行业中,MD5主要用于数据完整性校验和简单的密码加密。 MD5算法...
- `md5(请删除括号内容-可设置编码).java`:这个文件可能提供了一个MD5工具类,允许用户自定义编码方式,比如可以选择UTF-8、GBK等,以便正确处理包含非ASCII字符的字符串。 - `MD5(请删除括号内容-可生成指定...
MD5算法是一种非对称的加密算法,它将输入的信息通过一系列复杂的数学运算,最终得到一个128位的摘要信息,通常以32位的16进制字符串形式表示。由于MD5的单向性,即从原始信息恢复原始数据非常困难,因此常用于数据...
8. **字符串加密解密案例**:在提供的压缩包文件“字符串加密解密案例”中,可能包含具体的编程实现,如Python的cryptography库、Java的Cipher类或者JavaScript的crypto模块等,展示了如何在实际项目中应用上述理论...
总结,Java实现MD5加密算法主要是通过`java.security.MessageDigest`类,经过`getInstance("MD5")`获取MD5实例,然后使用`digest()`和`update()`方法处理数据,最终将二进制摘要转换为十六进制字符串。尽管MD5的安全...
在这个例子中,我们首先定义了一个字符串`inputString`,然后使用`getInstance("MD5")`创建了MD5哈希实例。接着,通过`digest()`方法计算出`inputString`的MD5摘要,这是一个字节数组。为了将字节转换成人类可读的...