1.SHA1 介绍

SHA-1(Secure Hash Algorithm 1)是一种安全散列算法,是美国国家安全局设计,并由美国国家标准与技术研究院(NIST)发布的一种加密散列函数。SHA-1基于MD5算法设计,但增加了安全性以防止碰撞攻ji(即两个不同的输入产生相同的输出散列值)。然而,随着时间的推移,研究人员已经成功找到了SHA-1的碰撞,这意味着SHA-1已经不再被认为是一个安全的加密算法,特别是对于需要高安全性的应用(如数字签名)来说。

尽管SHA-1已被视为不安全,但它在一些旧的系统和应用中仍然被广泛使用。

2.代码

public static String getSha1(String str) {
    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;
    }
}