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

    package com.cn.peitest;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5 {
        public static void main(String[] args) {
            String md5=getMD5("pei123456", 20);
            System.out.println("md5==============="+md5);
        }
        public static String getMD5(String plainText, int length) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5实例
                md.update(plainText.getBytes());//此处传入要加密的byte类型值
                byte[] digest = md.digest();//此处得到的是md5加密后的byte类型值
    
                /*
                           下边的运算就是自己添加的一些二次小加密,记住这个千万不能弄错乱,
                               否则在解密的时候,你会发现值不对的(举例:在注册的时候加密方式是一种,
                            在我们登录的时候是不是还需要加密它的密码然后和数据库的进行比对,但是
                        最后我们发现,明明密码对啊,就是打不到预期效果,这时候你就要想一下,你是否
                         有改动前后的加密方式)   
                */
                int i;
                StringBuilder sb = new StringBuilder();
                for (int offset = 0; offset < digest.length; offset++) {
                    i = digest[offset];
                    if (i < 0)
                        i += 256;
                    if (i < 16)
                        sb.append(0);
                    sb.append(Integer.toHexString(i));//通过Integer.toHexString方法把值变为16进制
                }
                return sb.toString().substring(0, length);//从下标0开始,length目的是截取多少长度的值
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    
    //================================================
    package com.cn.peitest;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    public class MD5Test {  
          
        /* 
         * 1.一个运用基本类的实例 
         * MessageDigest 对象开始被初始化。该对象通过使用 update 方法处理数据。 
         * 任何时候都可以调用 reset 方法重置摘要。 
         * 一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。 
         * 对于给定数量的更新数据,digest 方法只能被调用一次。 
         * 在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。  
         */  
        public void encrypByMd5(String context) {  
            try {  
                MessageDigest md = MessageDigest.getInstance("MD5");  
                md.update(context.getBytes());//update处理  
                byte [] encryContext = md.digest();//调用该方法完成计算  
      
                int i;  
                StringBuffer buf = new StringBuffer("");  
                for (int offset = 0; offset < encryContext.length; offset++) {//做相应的转化(十六进制)  
                    i = encryContext[offset];  
                    if (i < 0) i += 256;  
                    if (i < 16) buf.append("0");  
                    buf.append(Integer.toHexString(i));  
               }  
               System.out.println("32result: " + buf.toString());// 32位的加密  
               System.out.println("16result: " + buf.toString().substring(8, 24));// 16位的加密  
            } catch (NoSuchAlgorithmException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
          
        public static void main(String[] args) {  
            MD5Test md5 = new MD5Test();  
            md5.encrypByMd5("yang");  
        }  
    }  
  • 相关阅读:
    Python之‘’控制流‘’
    Python之运算符以及基本数据类型的object
    Python第一次写的代码
    Oracle角色管理
    Oracle的控制文件和日志文件
    Oracle的权限管理
    Oracle内置函数
    Oracle视图的使用
    Oracle事务和锁
    Oracle的用户管理
  • 原文地址:https://www.cnblogs.com/xianz666/p/13407902.html
Copyright © 2011-2022 走看看