Gouzhong1223

不会混音还有剪辑的电焊工不是一个合格的码农

少年你和伙伴一起走过时间海
  menu

什么是 SHA-1 加密

f0rdHx5P8sQ.jpg

为什么写这个

做微信开发的时候,会被要求验证域名 URL,其中一个要求就是校验微信服务器发送过来的数据,需要到 SHA-1 加密,下面就写一下什么是 SHA-1 加密。

什么是 SHA-1 加密

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法 1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1 可以生成一个被称为消息摘要的 160 位(20 字节)散列值,散列值通常的呈现形式为 40 个十六进制数。

SHA-1 已经不再视为可抵御有充足资金、充足计算资源的攻击者。2005 年,密码分析人员发现了对 SHA-1 的有效攻击方法,这表明该算法可能不够安全,不能继续使用,自 2010 年以来,许多组织建议用 SHA-2 或 SHA-3 来替换 SHA-1。Microsoft、Google 以及 Mozilla 都宣布,它们旗下的浏览器将在 2017 年前停止接受使用 SHA-1 算法签名的 SSL 证书。

2017 年 2 月 23 日,CWI Amsterdam 与 Google 宣布了一个成功的 SHA-1 碰撞攻击,发布了两份内容不同但 SHA-1 散列值相同的 PDF 文件作为概念证明。

1920pxSHA1.svg.png

Java 代码实现 SHA-1 加密

import java.security.MessageDigest;

/**
 * @Author : Gouzhong
 * @Blog : www.gouzhong1223.com
 * @Description : sha1加密
 * @Date : create by QingSong in 2019-12-25 1:43 下午
 * @Email : 1162864960@qq.com
 * @Since : JDK 1.8
 * @ProjectName : springboot-weixin-mp
 */
public class Sha1Util {
    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;
        }
    }
}

完结


标题:什么是 SHA-1 加密
作者:Gouzhong1223
地址:https://gouzhong1223.com/articles/2020/03/10/1583835947487.html