zoukankan      html  css  js  c++  java
  • MD5和SHA加密实现

    @Test
        public void TestMD5AndSHA() throws NoSuchAlgorithmException {
            String MD5=Md5("123456");//MD5加密算法
            System.out.println(MD5);
            String SHA=SHA256("123456");//SHA256加密算法
            System.out.println(SHA);
            //先经过MD5加密在经过SHA加密
            String Md5AndSha256=SHA256(Md5("123456"));
            System.out.println(Md5AndSha256);
        }
    
        public static String Md5(String str) throws NoSuchAlgorithmException {
            String MD5 ="";
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            byte[] bytes = str.getBytes();
            byte[] digest = md5.digest(bytes);
            for (int i = 0; i < digest.length; i++) {
                //摘要字节数组中各个字节的"十六进制"形式.
                int j = digest[i];
                j = j & 0x000000ff;
                String s1 = Integer.toHexString(j);
                if (s1.length() == 1) {
                    s1 = "0" + s1;
                }
                MD5 += s1;
            }
            return MD5;
        }
    
    
        public  static String SHA256(String str){
            MessageDigest messageDigest;
            String encodeStr = "";
            try {
                messageDigest = MessageDigest.getInstance("SHA-256");
                messageDigest.update(str.getBytes("UTF-8"));
                encodeStr = byte2Hex(messageDigest.digest());
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
           return encodeStr;
        }
    
    
        private static String byte2Hex(byte[] bytes){
            StringBuffer stringBuffer = new StringBuffer();
            String temp = null;
            for (int i=0;i<bytes.length;i++){
                temp = Integer.toHexString(bytes[i] & 0xFF);
                if (temp.length()==1){
                    stringBuffer.append("0");
                }
                stringBuffer.append(temp);
            }
            return stringBuffer.toString();
        }

    总结MD5算法和SHA都是不可逆的算法,网上的破解方法都是穷举出来的,只要密码长度长一点,是不可能解出来的

    MD5算法破解比较容易,加密速度比较快

    SHA算法破解比较难,加密速度比较慢

    一起使用虽然很保密解码几乎不可能,但是会浪费很多开销。

  • 相关阅读:
    如何让position:fixed在IE6中工作 不抖动
    【javascript基础】之【宿主环境】
    用函数式编程技术编写优美的 JavaScript
    IE6下使用滤镜后链接不能点击的BUG
    什么是内存泄漏
    Best Practices for Speeding Up Your Web Site
    Object.prototype.toString.call()
    【前端优化】IE浏览器下同一网页多图片显示的瓶颈与优化
    get username
    open file and format readin
  • 原文地址:https://www.cnblogs.com/CY-947205926/p/8898138.html
Copyright © 2011-2022 走看看