首页 > 编程知识 正文

新手必学的加密算法:MD5加密

时间:2023-05-04 15:09:27 阅读:211547 作者:2159

新手必学的加密算法:MD5加密

MD5Util类里面的内容:

package com.neuedu.util;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Util {private static final char[] HEX = new char[] {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};public static String md5(String source) {try {//1、返回现实指定摘要算法的MessageDigest对象MessageDigest messageDigest=MessageDigest.getInstance("MD5");//2、获取字节,string-》bytebyte[] input = source.getBytes();//3、使用指定的byte更新摘要messageDigest.update(input);//4、加密:通过执行诸如填充之类的最终操作完成希哈运算:128位(16字节) 的散列值byte[] bytes =messageDigest.digest();//1字节 = 8位 : 35 -> 0010 0011//长度:16 {-89, -70, -62, 35, -97, -51, -53, 58, 6, 121, 3, -40, 7, 124, 74, 7}//System.out.println("长度:" + bytes.length + " " +Arrays.toString(bytes));//5.将128位的MD5散列表示为长度为32的十六进制数字/*int b = -89;//获取左边四位System.out.println(Integer.toBinaryString(b)); //111111111111111111111111 1010 0111System.out.println(Integer.toBinaryString(b>>>4)); //000011111111111111111111 1111 1010 无符号右移4位 //000000000000000000000000 0000 1111 为了将左四位的1去掉,需要与十六进制的F进行与&运算System.out.println(Integer.toBinaryString(b>>>4 & 0xF));//000000000000000000000000 0000 1010 左边的四位//获取右边的四位System.out.println(Integer.toBinaryString(b)); //111111111111111111111111 1010 0111 //000000000000000000000000 0000 1111 为了将右四位前面的1去掉,需要与十六进制的F进行与&运算System.out.println(Integer.toBinaryString(b & 0xF)); //000000000000000000000000 0000 0111 右边的四位//十进制System.out.println(b>>>4 & 0xF);//10System.out.println(b & 0xF); //7//十六进制System.out.println(Integer.toHexString(b>>>4 & 0xF));//aSystem.out.println(Integer.toHexString(b & 0xF)); //7*///对密码进行加密,写属于自己的算加密算法,上面的是供你使用的一部分,就是说这一段算法随你自己安排,这里只是一个示范作用。//①创建一个字符数组用来存值char[] chars = new char[bytes.length*2];int k =0;for (int i = 0; i < bytes.length; i++) {byte b= bytes[i];//将这个16位里面的的值逐一进行拆分,具体拆分请看上面 的做法,chars[k++]=HEX[b>>>4 & 0xF];chars [k++]= HEX[b & 0xF];}return new String (chars);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}}

测试类:test

package com.neuedu.util;public class test {public static void main(String[] args) {System.out.println(MD5Util.md5("zhowen"));}}

使用方法和测试里面的一样。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。