突然想做个小试验方便以后开发网站时可以与DZ共享用户,所以写了个MD5加密去配配DZ数据库的dz_uc_members表的password字段。
代码如下:
import java.security.MessageDigest;
public class MD5ForDiscuz
{
private String inStr;
private MessageDigest md5;
/**
* Constructs the MD5 object and sets the string whose MD5 is to be
* computed.
*
* @param inStr
* the <code>String</code> whose MD5 is to be computed
*/
public MD5ForDiscuz(String inStr)
{
this.inStr = inStr;
try
{
this.md5 = MessageDigest.getInstance("MD5");
}
catch (Exception e)
{
System.out.println(e.toString());
e.printStackTrace();
}
}
/**
* Computes the MD5 fingerprint of a string.
*
* @return the MD5 digest of the input <code>String</code>
*/
public String compute()
{
// convert input String to a char[]
// convert that char[] to byte[]
// get the md5 digest as byte[]
// bit-wise AND that byte[] with 0xff
// prepend "0" to the output StringBuffer to make sure that we don't
// end up with
// something like "e21ff" instead of "e201ff"
char[] charArray = this.inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = this.md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++)
{
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
/**
* 该测试在Discuz 7.2版本上
* @param args
*/
public static void main(String[] args)
{
//admin为dz_uc_members表的password字段未加密前的明文
MD5ForDiscuz md5 = new MD5ForDiscuz("admin");
//用MD5第一次加密
String pwd = md5.compute();
//将加密后的密文加上dz_uc_members表的salt字段
//因为DZ加密是使用MD5加密后加上随机码再次加密,所以需要还原加密
pwd = pwd + "2632ef";
//再次用MD5加密
MD5ForDiscuz m = new MD5ForDiscuz(pwd);
//得到最终密文
String npwd = m.compute();
System.out.println(npwd);
//6f96f727c37cacbd4578ab4a6ea3d97c //数据库的密文
//6f96f727c37cacbd4578ab4a6ea3d97c //控件台输出的密文
}
}
分享到:
相关推荐
总结,Java实现MD5加密算法主要是通过`java.security.MessageDigest`类,经过`getInstance("MD5")`获取MD5实例,然后使用`digest()`和`update()`方法处理数据,最终将二进制摘要转换为十六进制字符串。尽管MD5的安全...
java实现MD5加密解密算法,java源代码~
java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...
java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...
当用户登录时,系统会将用户输入的密码使用 MD5 加密算法进行加密,然后将加密后的密码与存储在数据库中的密码进行比较。如果两个密码相同,则验证通过。 MD5 加密算法的优点是: 1. 安全性高:MD5 加密算法可以...
MD5加密算法是一种广泛使用的哈希函数,用于生成固定长度(128位)的散列值,即使输入数据有微小变化,也能产生截然不同的输出,这使其在密码学领域有着重要的应用,尤其是在数据完整性和身份验证方面。本文将深入...
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
* MD5加密算法存在彩虹表攻击的风险。 * MD5加密算法存在密钥长度有限的风险。 因此,在使用MD5加密时,需要采取相应的安全措施,例如使用salt值和密钥加密等。 MD5加密是一种常用的密码学哈希函数,广泛应用于...
VBA MD5加密 算法
这是可以运用在Javaweb项目开发中密码的加密,代码沉余少。
md5加密算法 C语言(经过测试验证完整版) 经过调试验证,与工具结果一致 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash...
MD5的主要应用是对数据进行完整性校验,比如在软件分发时,发布者会提供文件的MD5校验值,用户可以计算下载文件的MD5值来验证文件是否完整无误。 在C++中实现MD5加密算法,通常包括以下几个步骤: 1. **初始化MD5...
md5加密算法源码: 一 \md5加密是对字符或密码进行的16位或32位等加密方式! 一般在普通MDB数据库经常用到,比如论坛数据库等.有用! 二 \加密解密并不矛盾,比如银行系统的128位加密现在谁可以轻易破的了呢? 虽然md5...
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的、不可逆的数字摘要,常用于存储密码。MD5算法将任意长度的输入(也叫做预映射,pre-image)通过...
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
为了增加安全性,通常会结合加盐(Salt)策略,即在密码前或后添加一个随机字符串再进行MD5加密,这样即使两个用户使用相同的密码,其加密结果也会不同,从而降低彩虹表攻击的风险。此外,还可以使用多次迭代的哈希...
### JAVA MD5加密算法 #### 一、简介 在计算机科学领域中,MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据转换为一个固定长度(通常是128位)的十六进制数字字符串。这种转换...
MD5加密算法的VB6.0类模块实例 MD5加密算法是目前广泛使用的一种加密算法,主要用于数据完整性和身份验证。VB6.0是微软公司开发的一种编程语言,广泛应用于Windows操作系统的开发中。该类模块实例将MD5加密算法与VB...