开发微信公众号过程中,需要使用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;
}