手写SHA1加密算法(Java版)

更新时间:2020-04-27 10:23:35 点击次数:1127次
开发微信公众号过程中,需要使用sha1加密算法与微信api对接,特此学习下sha1算法的实现。

1:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。

2:1byte等于二进制8位,则分成高四位和第四位进行加密解析。由于15在二进制中表示为"00001111",则和15低四位与(&)运算,运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
代码如下:

    //sha1加密
private static String sha1(String src) {
try {
//获取加密对象
MessageDigest md = MessageDigest.getInstance("sha1");
//加密
byte[] digest = md.digest(src.getBytes());
//sha1加密后结果只能是如下数组的数值
char[] chars = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//拼接加密后的字符串
StringBuffer sb = new StringBuffer();
//处理加密结果
for (byte b : digest) {
//1byte代表8位(二进制),分别对高四位和低四位进行与运算,得到chas对应的数值
sb.append(chars[(b>>4)&15]);
sb.append(chars[b&15]);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}



本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!