zoukankan      html  css  js  c++  java
  • 密码学

    链接

    数字签名  

    基本概念

    摘要(digest):摘要、hash、散列 有时候会混为一谈,大部分都是一个东西
    将长度不固定的消息作为输入,通过运行hash函数,生成固定长度的输出,这段输出就叫做摘要。通常用来验证消息完整、未被篡改。
    摘要运算是不可逆的。也就是说,输入固定的情况下,产生固定的输出。但知道输出的情况下,无法反推出输入。
    常见的摘要算法 与 对应的输出位数如下:
    MD5:128位
    SHA-1:160位
    SHA256 :256位
    SHA512:512位

    MAC(Message Authentication Code):消息认证码,用以保证数据的完整性。运算结果取决于消息本身、秘钥。
    MAC可以有多种不同的实现方式,比如HMAC。
    HMAC(Hash-based Message Authentication Code):可以粗略地理解为带秘钥的hash函数。

    对称加密:常见的对称加密算法:DES、3DES、AES、Blowfish、RC5、IDEA。
    非对称加密:常见的非对称加密算法:RSA、DSA、ElGamal。

    签名:1、确认信息来源于特定的主体。2、确认信息完整、未被篡改。
    发送方生成签名:
    1、计算原始信息的摘要。
    2、通过私钥对摘要进行签名,得到电子签名。
    3、将原始信息、电子签名,发送给接收方。
    伪代码:digest = hash(message); // 计算摘要
    digitalSignature = sign(digest, priviteKey); // 计算数字签名

    接收方验证签名:
    1、通过公钥解开电子签名,得到摘要D1。(如果解不开,信息来源主体校验失败)
    2、计算原始信息的摘要D2。
    3、对比D1、D2,如果D1等于D2,说明原始信息完整、未被篡改。
    伪代码:digest1 = verify(digitalSignature, publicKey); // 获取摘要
    digest2 = hash(message); // 计算原始信息的摘要
    digest1 === digest2 // 验证是否相等

  • 相关阅读:
    devise 异步发邮件
    ubuntutweak for lucid
    960gs blueprint
    Amoeba for mysql 0.31发布(读写分离、负载均衡、Failover、数据切分)
    Google App Servlet容器转型 – 从Tomcat到Jetty
    DBeaver
    用simple from暂不用formtastic
    [SQL Server]ORDER BY的问题
    PHP pathinfo() 函数
    php中使用head进行二进制流输出,让用户下载PDF等附件的方法
  • 原文地址:https://www.cnblogs.com/luoyangyang/p/11585552.html
Copyright © 2011-2022 走看看