java系列--MD5加密

方案一:

/**
    * 1.对文本进行32位小写MD5加密
    * @param plainText 要进行加密的文本
    * @return 加密后的内容
    */
    public static String textToMD5L32(String plainText){
        String result = null;
        //首先判断是否为空
        try{
            MessageDigest md = MessageDigest.getInstance("MD5");           //首先进行实例化和初始化
            byte[] btInput = plainText.getBytes();      //得到一个操作系统默认的字节编码格式的字节数组
            md.update(btInput);                //对得到的字节数组进行处理
            byte[] btResult = md.digest();         //进行哈希计算并返回结果
            StringBuffer sb = new StringBuffer();     //进行哈希计算后得到的数据的长度
            for(byte b : btResult){
                int bt = b&0xff;
                if(bt<16){
                    sb.append(0);
                }
                sb.append(Integer.toHexString(bt));
            }
            result = sb.toString();
        }catch(NoSuchAlgorithmException e){
            e.printStackTrace();
        }
        return result;
    }

方案二:

    public static String getMD5(String source) {
        String s = null;
        char hexChar[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        'A', 'B', 'C', 'D', 'E', 'F' };
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(source.getBytes());// 使用指定的byte数组更新摘要
            byte[] hashCalc = md.digest();// 完成哈希计算
            char result[] = new char[16 * 2];// MD5结果返回的是32位字符串,每位是16进制表示的
            int k = 0;
            for (int i = 0; i < 16; i++) {// 循环16次,对每个字节进行操作转换
                byte everyByte = hashCalc[i];
                result[k++] = hexChar[everyByte >>> 4 & 0xf];// 对每个字节的高4位进行处理,逻辑右移,再相与
                result[k++] = hexChar[everyByte & 0xf];// 低4位转换
            }
            s = new String(result);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return s;
        }
        public static void main(String[] args) {
        System.out.println(getMD5("a"));
    } 
上一篇:AC 自动机在这里


下一篇:Intention.js – 动态重构 HTML 为响应式模式