欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 实现字符串SHA1加密方法

程序员文章站 2022-03-10 13:20:30
目录java 字符串sha1加密导入类定义函数javasha1实现加密解密封装一个方法用于加密主函数测试java 字符串sha1加密导入类import java.security.messagedig...

java 字符串sha1加密

导入类

import java.security.messagedigest;

定义函数

private string touserpwd(final string password) {
  try {
   if (password == null) {
    return null;
   }
   final messagedigest messagedigest = messagedigest.getinstance("sha");
   final byte[] digests = messagedigest.digest(password.getbytes());
   final stringbuilder stringbuilder = new stringbuilder();
   for (int i = 0; i < digests.length; i++) {
    int halfbyte = (digests[i] >>> 4) & 0x0f;
    for (int j = 0; j <= 1; j++) {
     stringbuilder.append(
       ((0 <= halfbyte) && (halfbyte <= 9))
         ? (char) ('0' + halfbyte)
         : (char) ('a' + (halfbyte - 10)));
     halfbyte = digests[i] & 0x0f;
    }
   }
   return stringbuilder.tostring();
  } catch (final throwable throwable) {
   this.log.error("error converting password", throwable);
   return null;
  }
 }

javasha1实现加密解密

封装一个方法用于加密

/**
     * sha1加密
     * @param data
     * @return
     * @throws nosuchalgorithmexception 
     */
    public static string sha1(string data) throws nosuchalgorithmexception {
        //加盐   更安全一些
        data += "lyz";
        //信息摘要器                                算法名称
        messagedigest md = messagedigest.getinstance("sha1");
        //把字符串转为字节数组
        byte[] b = data.getbytes();
        //使用指定的字节来更新我们的摘要
        md.update(b);
        //获取密文  (完成摘要计算)
        byte[] b2 = md.digest();
        //获取计算的长度
        int len = b2.length;
        //16进制字符串
        string str = "0123456789abcdef";
        //把字符串转为字符串数组
        char[] ch = str.tochararray();
        
        //创建一个40位长度的字节数组
        char[] chs = new char[len*2];
        //循环20次
        for(int i=0,k=0;i<len;i++) {
            byte b3 = b2[i];//获取摘要计算后的字节数组中的每个字节
            // >>>:无符号右移  
            // &:按位与
            //0xf:0-15的数字
            chs[k++] = ch[b3 >>> 4 & 0xf];
            chs[k++] = ch[b3 & 0xf];
        }
        
        //字符数组转为字符串
        return new string(chs);
    }

主函数测试

    public static void main(string[] args) throws nosuchalgorithmexception {
        string data = "跳梁小豆tlxd666";
        string result = sha1(data);
        system.out.println("加密后:"+result);
    }    

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。