关于MD5加密结果

正常MD5键入‘123’加密得‘202cb962ac59075b964b07152d234b70’;键入‘1024’得‘021bbc7ee20b71134d53e20206bd6feb’
但是我的系统键入‘123’得’202cb962ac5975b964b7152d234b70‘;键入‘1024’得‘21bbc7ee2b71134d53e226bd6feb’
明显少了几个0,这是MD5的加密结果么?如果不是这是什么加密方式?

第1个回答  2018-05-19
你这个应该是网上找的 错误的JAVA MD5加密实现代码吧? 使用错误的方式加密出来的就是你贴出来的那个密文
//错误的方式;0xFF & byteArray[i]).length() == 1 的时候会缺少 0 位数不对,
// md5StrBuff.append(Integer.toHexString(0xff & byteArray[i]));

//正确的方式
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
} else {
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
//end
完整的:

import java.security.MessageDigest;

public class MD5Util {
public static void main(String[] args) {

System.out.println(MD5("123"));
}
/**
* 将字符串加密为MD5的结果
* @param source 源字符串
* @return 加密后的字符串
*/
public static String MD5(String source) {
try {
// 对密码进行MD5加密处理
byte byteEncrypt[] = null;
byteEncrypt = source.getBytes("UTF8");
MessageDigest mdInstance = MessageDigest.getInstance("MD5");
mdInstance.update(byteEncrypt);
byte byteArray[] = mdInstance.digest();

// MD5转换编码
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {

//错误的方式;0xFF & byteArray[i]).length() == 1 的时候会缺少 0 位数不对
// md5StrBuff.append(Integer.toHexString(0xff & byteArray[i]));

//正确的方式
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
} else {
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
//end

}

return md5StrBuff.toString();
} catch (Exception e) {
}

return null;
}
}本回答被网友采纳
第2个回答  2014-04-24
202cb962ac5975b964b7152d234b70

这个非MD5格式的~

三分钟了解MD5加密后16位与32位的区别
MD5加密结果有两种长度:16位和32位。32位是默认设置,而16位实际上是直接从32位字符串中截取中间的第9位到第24位。在使用Java语言时,可以通过`substring(8, 24)`操作来实现这一转换。为了进一步提升安全性,可以对原始数据进行偏移量的添加,从而生成更长的MD5字符串。在安全性方面,虽然16位MD5加...

求MD5 加密密码
需要加密的如下 md5(C1CE5FEB09F13848173F0485CEEF36AB, 32) = 8338d1093ee2d15f3f8dbccd93b9b6a9md5(C1CE5FEB09F13848173F0485CEEF36AB, 16) = 3ee2d15f3f8dbccd

MD5加密最长允许多少字节的字符串
MD5加密后的值是128bit的,按4位二进制组合成一个十六进制,所以最后出来的十六进制字符串是32个,比如d3379f609e1aa88da2f50018d4fa218f。要说被MD5加密的字符串,是没有限制的。

MD5加密会产生16位跟32位的结果?
两个结果是一样的,32位更加安全,hash碰撞几率更低无论加密内容是什么结果都是32位而16位不过是32位中间那部分仔细看呵呵

md5加密以后的字符串长度
加密后为128位(bit),按照16进制(4位一个16进制数)编码后,就成了32个字符。MD5并不是加密算法zhidao,而是摘要算法。加密算法是可逆的,摘要算法是理专论上不可逆的,详细步骤:1、md5算法主要应用在密码领域,为了防止明文传输密码的危险性,一般会用密码的md5值来代替密码本身。2、md5算法的工具...

md5加密的密码是怎么解密的呢?
MD5是一种被广泛使用的密码哈希函数,它的主要作用是将任意长度的“字节串”映射为一个固定长度(通常是128位)的大数,并且这个映射过程是不可逆的。也就是说,一旦一个密码被MD5加密,我们就无法从加密后的结果中恢复出原始的密码。MD5的设计初衷是为了确保数据的完整性和安全性。当数据被...

MD5加密后的值可能相同
1 你说的两个不同的字符串用MD5计算产生相同结果(散列冲突)是极小概率事件,基本上可以认为不会发生。除非你是研究MD5破解的科学家。我不认为你的情况是极小概率的散列冲突,更有可能是你的MD5算法有问题。2 MD5将任意长度的字符串映射为一个128位散列值。 所以输入可以是任意长度的,不存在你说的...

求大神帮我用MD5算法加密一段数字 584209956 求详细过程,急急急_百度...
在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448,N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位...

md5问题,高手来看看下啊!
password= 意思就是“密码是”d9729feb74992cc3482b350163a1a010 是MD5加密后的结果,其实他的密码就是三个字母“sdf”,sdf经过32位MD5加密后,就是d9729feb74992cc3482b350163a1a010 整句来说,就是“密码是sdf”的意思了。

关于MD5加密算法密码验证问题
MD5加密的结果值A,是可以由两个不同的内容B和C得到的 即:期望的正确密码 a a进行MD5加密的结果 0cc175b9c0f1b6a831c399e269772661 某人输入了错误的密码x,x进行特殊的算法处理,是可以得到0cc175b9c0f1b6a831c399e269772661 这个MD5值的 ———但是你注意一点,错误的密码数据,必须是...

相似回答