消息摘要(MessageDigest)

来源:互联网 发布:淘宝购物节 编辑:程序博客网 时间:2024/04/29 11:54

常见算法: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();    }
0 0