今天做项目的时候发现java里md5算法返回的是16个字节长的byte,但是rails加密后是32位长的字符串,于是需要在客户端将这16字节的byte转换为32个字符的字符串,找到了一个算法如下:
//测试
MessageDigest md = MessageDigest.getInstance("MD5");
md.update("samyou".getBytes());
byte b[] = md.digest();
System.out.println(bytesToHexString(b));
以下是算法:
public static final String bytesToHexString(byte[] bArray)
{
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toLowerCase());
}
return sb.toString();
}
分享到:
相关推荐
- `md5(请删除括号内容-可设置编码).java`:这个文件可能提供了一个MD5工具类,允许用户自定义编码方式,比如可以选择UTF-8、GBK等,以便正确处理包含非ASCII字符的字符串。 - `MD5(请删除括号内容-可生成指定...
这段代码首先通过`getInstance("MD5")`获取MD5实例,然后对字符串`input`进行哈希计算,得到的字节数组转换为16进制字符串并返回。如果在运行过程中找不到MD5算法,会抛出`NoSuchAlgorithmException`。 `images`...
4. 获取哈希值:调用`digest()`方法计算MD5摘要,返回的是字节数组,通常会转换为16进制字符串展示。 ```java byte[] digestBytes = md.digest(); StringBuilder hexString = new StringBuilder(); for (byte b : ...
这段代码首先获取了`MD5`算法的`MessageDigest`实例,然后对输入字符串的字节进行哈希计算,最后将结果转换为16进制字符串。运行`main`方法,会打印出输入字符串的MD5摘要。 另一方面,`CalcMD5.exe`可能是一个...
- `getMD5ofStr`是主要的接口,接收一个字符串,将其转换为字节数组,然后调用`md5Update`和`md5Final`进行处理,最终返回16进制表示的MD5摘要。 - `md5Init`用于初始化MD5算法的状态,设置默认的初始值和清零...
`MD5_test`类包含一个静态方法`MD5`,该方法接受一个字符串参数`s`,并返回经过MD5加密后的字符串结果。 #### MD5方法内部实现 1. **字符编码转换**:首先将输入的字符串转换为字节数组。 ```java byte[] ...
3. **MD5编码**:对输入的原始字符串进行MD5加密处理,并返回加密后的结果。 #### 三、代码解析 ##### 1. 转换字节数组为16进制字符串 ```java public static String byteArrayToHexString(byte[] b) { ...
### Java中的MD5算法 #### 一、简介 在计算机科学领域中,MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据转换为固定长度的128位(16字节)哈希值。由于其独特的特性,MD5被...
最后,调用`digest`方法计算哈希值,这将返回一个16字节的数组,我们可以将其转换为16进制字符串进行显示: ```java byte[] digestBytes = md.digest(); StringBuilder sb = new StringBuilder(); for (byte b : ...
- 上述代码中,`encrypt()`方法接收字符串数据,返回其MD5哈希值。`bytesToHex()`方法将字节数组转换为16进制字符串。 3. **使用注意事项**: - MD5由于安全性问题,已经被认为不适合用于密码存储等高度敏感的...
在Java编程语言中,MD5加密常用于密码保护、数据校验等场景,通过将原始字符串转化为一个固定长度的散列值,增加数据的安全性,防止数据在传输或存储过程中被篡改。 ### MD5加密原理 MD5算法接收任意长度的消息,...
在Java中,我们可以使用`getBytes()`方法将字符串转换为字节数组,使用`new String(byte[])`将字节数组转换回字符串,但要注意编码问题,通常使用UTF-8编码。 将加密后的字节数组转换为16进制字符串,是因为16进制...
在这个例子中,`DigestUtils.md5Hex()`方法接收一个字符串并返回其MD5摘要的十六进制表示。请注意,MD5虽然广泛使用,但已知存在安全性问题,容易遭受碰撞攻击。因此,在存储敏感信息如用户密码时,通常会结合盐值...
1. MD5Utils.java:这很可能是实现MD5加密功能的Java类,通常会包含一个或多个方法,如`getMD5(String input)`,用于接收字符串输入并返回其MD5值。这个类可能还包含了其他辅助方法,比如将字节数组转换为16进制字符...
5. **返回散列结果**:最后,返回经过Base64编码的MD5散列字符串。 #### 检查密码方法:checkpassword 此方法用于验证新密码与已存储的密码摘要是否匹配,是验证用户登录信息的关键部分。具体步骤包括: 1. **...
3. **getMD5Str方法**:该方法接收一个字符串参数`strIn`,并返回该字符串的MD5散列值。 - **初始化MessageDigest对象**:通过调用`MessageDigest.getInstance("MD5")`创建一个`MessageDigest`实例,指定使用MD5...
首先,我们通过`file()`方法指定要计算MD5的文件路径,然后将其字节内容传递给`md5Hex`方法,该方法会返回一个16进制表示的MD5字符串。最后,我们通过`println`打印出MD5值。 为了运行这个任务,只需在终端或命令行...
`md5`方法是核心的加密函数,它接受一个字符串`text`作为输入,返回其MD5加密后的字符串形式。该方法首先尝试获取`MessageDigest`实例,指定算法为"MD5": ```java MessageDigest msgDigest = null; try { ...
将要加密的字符串转换成字节数组,然后用`update()` 方法分批次地将数据加入到MD5处理中。 ```java byte[] dataBytes = message.getBytes("UTF-8"); md.update(dataBytes); ``` 注意:这里我们使用了UTF-8编码,...
在Java编程中,有时我们需要处理各种数据类型转换和安全操作,比如无符号数转换、字符串的左右补齐、MD5加密、UUID生成以及随机数的产生。以下是对这些知识点的详细说明: 1. **无符号数转换**:在Java中,基本数据...