Heim  >  Artikel  >  Java  >  Java-Implementierung eines MD5-Verschlüsselungsbeispiels

Java-Implementierung eines MD5-Verschlüsselungsbeispiels

高洛峰
高洛峰Original
2017-01-24 11:13:101445Durchsuche

/**
 * 实现MD5加密
 *
 */
public class MD5 {
 
 /**
  * 获取加密后的字符串
  * @param input
  * @return
  */
 public static String stringMD5(String pw) {
  try {  
     
        // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)  
        MessageDigest messageDigest =MessageDigest.getInstance("MD5");  
        // 输入的字符串转换成字节数组  
        byte[] inputByteArray = pw.getBytes();  
        // inputByteArray是输入字符串转换得到的字节数组  
        messageDigest.update(inputByteArray);  
        // 转换并返回结果,也是字节数组,包含16个元素  
        byte[] resultByteArray = messageDigest.digest();  
        // 字符数组转换成字符串返回  
        return byteArrayToHex(resultByteArray);  
     } catch (NoSuchAlgorithmException e) {  
        return null;  
     }  
 }
 
    public static String byteArrayToHex(byte[] byteArray) {  
        
        // 首先初始化一个字符数组,用来存放每个16进制字符  
        char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };  
        // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))  
        char[] resultCharArray =new char[byteArray.length * 2];  
        // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去  
        int index = 0; 
        for (byte b : byteArray) {  
           resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];  
           resultCharArray[index++] = hexDigits[b& 0xf];  
        }
        // 字符数组组合成字符串返回  
        return new String(resultCharArray);  
    }
}

Weitere Artikel zur Java-Implementierung von MD5-Verschlüsselungsbeispielen finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn