手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

java如何对字符串进行md5加密,获取md5值

时间:2024-10-14 02:24:21

1、md5算法主要应用在密码领域,为了防止明文传输密码的危险性,一般会用密码的md5值来代替密码本身

java如何对字符串进行md5加密,获取md5值

2、好,接下去我们就要写一个md5算法的工具类,来帮助我们计算字符串所对应的md5值

java如何对字符串进行md5加密,获取md5值

3、首先创建一个MD5Utils工具类

java如何对字符串进行md5加密,获取md5值

4、然后来写md5算法,事实上你不需要md5算法具体是怎么实现的,这里我们也只是调用了java自带的md5算法,只不过对其结果进行了优化,转换成了16进制的字符串了而已

java如何对字符串进行md5加密,获取md5值

5、虽然md5本身是不可逆的,但是因为其唯一性,会遭到遍历破解,所以一般使用md5的时候还会进行加盐操作,即在md5运算结果上再加入自己的加密算法,例如这里为将结果都加上字符串 yan,这样就不容腴李敝笃易被破解了,加盐的加密算法也可以自己直接封装在工具类中

java如何对字符串进行md5加密,获取md5值

6、贴上工具类的完整代码import java.security.MessageDigest;import j锾攒揉敫ava.security.NoSuchAlgorithmException;/*** MD5加密工具类*/public class MD5Utils { /** * 获取MD5加密 * * @param pwd * 需要加密的字符串 * @return String字符串 加密后的字符串 */ public static String getPwd(String pwd) { try { // 创建加密对象 MessageDigest digest = MessageDigest.getInstance("md5"); // 调用加密对象的方法,加密的动作已经完成 byte[] bs = digest.digest(pwd.getBytes()); // 接下来,我们要对加密后的结果,进行优化,按照mysql的优化思路走 // mysql的优化思路: // 第一步,将数据全部转换成正数: String hexString = ""; for (byte b : bs) { // 第一步,将数据全部转换成正数: // 解释:为什么采用b&255 /* * b:它本来是一个byte类型的数据(1个字节) 255:是一个int类型的数据(4个字节) * byte类型的数据与int类型的数据进行运算,会自动类型提升为int类型 eg: b: 1001 1100(原始数据) * 运算时: b: 0000 0000 0000 0000 0000 0000 1001 1100 255: 0000 * 0000 0000 0000 0000 0000 1111 1111 结果:0000 0000 0000 0000 * 0000 0000 1001 1100 此时的temp是一个int类型的整数 */ int temp = b & 255; // 第二步,将所有的数据转换成16进制的形式 // 注意:转换的时候注意if正数>=0&&<16,那么如果使用Integer.toHexString(),可能会造成缺少位数 // 因此,需要对temp进行判断 if (temp < 16 && temp >= 0) { // 手动补上一个“0” hexString = hexString + "0" + Integer.toHexString(temp); } else { hexString = hexString + Integer.toHexString(temp); } } return hexString; } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; }}

java如何对字符串进行md5加密,获取md5值
© 手抄报圈