java md5加密,加密后为何一般用 0-9 a-f??

发布于 2022-09-07 04:22:31 字数 1019 浏览 30 评论 0

比如下面的变量 hexDigits

/**

 * 对字符串md5加密(大写+数字) 
 * 
 * @param str 传入要加密的字符串 
 * @return  MD5加密后的字符串 
 */  
  
public static String MD5(String s) {  
    char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};         

    try {  
        byte[] btInput = s.getBytes();  
        // 获得MD5摘要算法的 MessageDigest 对象  
        MessageDigest mdInst = MessageDigest.getInstance("MD5");  
        // 使用指定的字节更新摘要  
        mdInst.update(btInput);  
        // 获得密文  
        byte[] md = mdInst.digest();  
        // 把密文转换成十六进制的字符串形式  
        int j = md.length;  
        char str[] = new char[j * 2];  
        int k = 0;  
        for (int i = 0; i < j; i++) {  
            byte byte0 = md[i];  
            str[k++] = hexDigits[byte0 >>> 4 & 0xf];  
            str[k++] = hexDigits[byte0 & 0xf];  
        }  
        return new String(str);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return null;  
    }  
}  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

折戟 2022-09-14 04:22:31

这不是加密,是为了文本化,因为md5出来的结果是二进制数,把二进制数转换为文本最直接的方法就是把每个byte转换成一个十六进制表达的字符串,自然输出的结果就是0~9,A~F了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文