阅读 295

Java 实现字符串SHA1加密方法

这篇文章主要介绍了Java 实现字符串SHA1加密方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

目录
  • Java 字符串SHA1加密

    • 导入类

    • 定义函数

  • javaSHA1实现加密解密

    • 封装一个方法用于加密

    • 主函数测试

Java 字符串SHA1加密

导入类

1
import java.security.MessageDigest;

定义函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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实现加密解密

封装一个方法用于加密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
     * 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);
    }

主函数测试

1
2
3
4
5
public static void main(String[] args) throws NoSuchAlgorithmException {
    String data = "跳梁小豆tlxd666";
    String result = sha1(data);
    System.out.println("加密后:"+result);
}   

以上为个人经验,希望能给大家一个参考

原文链接:https://blog.csdn.net/stonezealot_zjr/article/details/98756078


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐