消息摘要(MessageDigest)

常见算法:MD5,SHA,CRC等

使用场景:
1.对用户密码进行MD5加密后保存到数据库里
2.软件下载站使用消息摘要计算文件指纹,防止被篡改
3.数字签名

public class MessageDigestDemo {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        String content = "黑马程序员";
        //常用算法:MD5、SHA、CRC
        MessageDigest digest = MessageDigest.getInstance("MD5");
        byte[] result = digest.digest(content.getBytes());
        String hex = Util.bytes2Hex(result);

        //MD5结果为16字节(128个比特位)、转换为16进制表示后长度是32个字符
        //SHA结果为20字节(160个比特位)、转换为16进制表示后长度是40个字符
    }
}


/** * 字节数组转换成16进制字符串 * @param bytes * @return */
    public static String bytes2Hex(byte[] bytes) {
        if (bytes == null || bytes.length == 0) {
            return null;
        }

        StringBuffer sb = new StringBuffer();
        //17对应的十六进制为11,27对应的十六进制为1B
        //27对应的二进制是00011011
        //00011011-》00000001,00001011
        for (int i = 0; i < bytes.length; ++i) {
            int high = (bytes[i] & 0xf0) >> 4;//0xf0: 11110000
            int low = bytes[i] & 0x0f;//0x0f: 00001111
            sb.append(HEX_CHAR[high]).append(HEX_CHAR[low]);
        }
        return sb.toString();
    }

你可能感兴趣的:(MD5,算法)