基本加密算法

基本加密算法-安全散列算法


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}"
java实现
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)
常见算法:MD5(Message Digest algorithm 5,信息摘要算法),SHA(Secure Hash Algorithm,安全散列算法),HMAC(Hash Message Authentication Code,散列消息鉴别码)。

1、于服务器确定算法,使用公开函数和确定的秘钥作为认证标示
2、生成签名秘钥加入传送数据中
3、接收方校验信 息是否一致