手写SHA1加密算法(Java版)

开发微信公众号过程中,需要使用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) {
			e.printStackTrace();
		}
		return null;
	}

手写SHA1加密算法(Java版)_第1张图片

你可能感兴趣的:(后端)