Java MD5 加密 範例教学与用法

MD5 因为其不可逆的特性, 让它成为现今许多工程师常用的加密方式之一

尤其在这隐私权高涨的年代, 所有个资, 卡号, 交易金流相关都会用到加密

来看个简单的範例

public static void main(String[] args){        String str = "helloJava";  //要加密的字串        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};                try {            MessageDigest messageDigest = MessageDigest.getInstance("MD5");            messageDigest.update(str.getBytes("UTF-8"));            //Hash计算, 产生128位的长整数            byte[] bytes = messageDigest.digest();            StringBuffer sb = new StringBuffer(bytes.length * 2);            for(Byte b : bytes){                //右移四位, 取字节中前四位转换                sb.append(hexDigits[(b >> 4) & 0x0f]);                //取字节中后四位转换                sb.append(hexDigits[b & 0x0f]);             }            //输出 602965cf9dd0e80ca28269257a6aba87            System.out.println(sb.toString());           } catch (Exception e) {            e.printStackTrace();        }    }

网路上有看到MD5有分32位元跟16位元, 是什么意思呢?

其实MD5的长度原生为128bit, 也就是128个0跟1组合

但这样的方式不易阅读, 所以我们会转成16进制, 每4个bit表示1个16进制

所以 128/4 = 32, 就变32位元了, 这也是大部分人用的方法。

那16位元是怎么来的?

16位元是去掉前8位, 后8位得到的, 所以16位元的数值会跟32位元的中间部分一样。

MD5 32位元 = 602965cf9dd0e80ca28269257a6aba87MD5 16位元 = 9dd0e80ca2826925

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章