zoukankan      html  css  js  c++  java
  • MD5、SHA1加密java 16位32位

    MD5、SHA1加密java 16位32位

    import java.math.BigInteger;
    import java.security.MessageDigest;
    
    public class AppMD5Util {
        
         /**
        * 对字符串md5加密(小写+字母)
        *
        * @param str 传入要加密的字符串
        * @return  MD5加密后的字符串
        */
       public static String littleMD5a(String str) {
           try {
               // 生成一个MD5加密计算摘要
               MessageDigest md = MessageDigest.getInstance("MD5");
               // 计算md5函数
               md.update(str.getBytes());
               // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
               // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
               return new BigInteger(1, md.digest()).toString(16);
           } catch (Exception e) {
              e.printStackTrace();
              return null;
           }
       }
       
       
       // 16位是将32位中的16截取出来
        public static String little16MD5a(String str) {
            return littleMD5a(str).substring(8, 24);
        }
       
       
       /**
        * 对字符串md5加密(大写+数字)
        *
        * @param str 传入要加密的字符串
        * @return  MD5加密后的字符串
        */
       
       public static String BigMD55(String string) {
           char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};       
    
           try {
               byte[] btInput = string.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;
           }
       }
       
    
        // 16位是将32位中的16截取出来
        public static String Big16MD55(String str) {
            return BigMD55(str).substring(8, 24);
        }
        
    
       
       //获取SHA1加密值   
       public static String getSHA1(String str){
           if(str==null||str.length()==0){
               return null;
           }
           char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',
                   'a','b','c','d','e','f'};
           try {
               MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
               mdTemp.update(str.getBytes("UTF-8"));
    
               byte[] md = mdTemp.digest();
               int j = md.length;
               char buf[] = new char[j*2];
               int k = 0;
               for (int i = 0; i < j; i++) {
                   byte byte0 = md[i];
                   buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                   buf[k++] = hexDigits[byte0 & 0xf];
               }
               return new String(buf);
           } catch (Exception e) {
               return null;
           }
       }  
       
       
    
        public static void main(String[] args) {
            String bigmd5 = BigMD55("miniprograme");
            System.err.println("32大写加数字  "+bigmd5);
            
            long Time13 = System.currentTimeMillis();
            System.out.println(Time13);
            String postbigmd5time = "POST"+bigmd5+ Time13;
            System.err.println("post32大写加数字 时间戳  "+ postbigmd5time);
            
            System.out.println("最终的sign值  "+ getSHA1(postbigmd5time));
            
            System.err.println("最终的sign值  "+ getSHA1(postbigmd5time));
            
            System.out.println(Time13);
    
            
        }
    
    
    }

    输出结果:

    32大写加数字 665DEA957EBFB34D41B1F1D80E4B5F89

    1541950721595
    最终的sign值 208eaf1e8052a41d7ef8fe11de5991249fd63b8e
    1541950721595

    post32大写加数字 时间戳 POST665DEA957EBFB34D41B1F1D80E4B5F891541950721595
    最终的sign值 208eaf1e8052a41d7ef8fe11de5991249fd63b8e

  • 相关阅读:
    mysql 存储过程实例
    国际会议查询方式和相关会议
    用 WEKA 进行数据挖掘,第 1 部分: 简介和回归(转)
    java实现甘特图的2种方法:SwiftGantt和Jfree (转)
    通过jxl 读取excel 文件中的日期,并计算时间间隔
    R 操作矩阵和计算SVD的基本操作记录
    SVD java 算法实现
    聚类方法简介
    Kolmogorov-Smirnov检验
    Java Thread 多线程 介绍
  • 原文地址:https://www.cnblogs.com/111testing/p/9944284.html
Copyright © 2011-2022 走看看