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 // 验证是否相等

  • 相关阅读:
    ZJU_1145 OR POJ_1100 Dreisam Equations
    数据结构基础之队列
    The New Villa
    Mission Impossible 6
    数据结构基础之栈
    POJ_1185_炮兵阵地 dp+状态压缩
    (转载)Dig命令的用法
    (转载)服务发现系统etcd介绍
    golang 导入包
    1.4方程求根之弦截法
  • 原文地址:https://www.cnblogs.com/luoyangyang/p/11585552.html
Copyright © 2011-2022 走看看