基本加密算法
基本加密算法-安全散列算法
SHA(Secure Hash Algorithm,SHA)安全散列法
SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文>,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也>称为信息摘要或信息认证代码)的过程。
通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同 的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方>的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。 MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码 的合法性。
ruby实现
1
2
3
digest = OpenSSL::Digest::Digest.new('sha1')
signature = OpenSSL::HMAC.hexdigest(digest, secret_key, json_str)
puts "signature = #{signature}"
1
2
3
4
SecretKey secretKey = new SecretKeySpec(signature_key.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
String signature = mac.doFinal(inputStr)
1、于服务器确定算法,使用公开函数和确定的秘钥作为认证标示
2、生成签名秘钥加入传送数据中
3、接收方校验信
息是否一致