现代密码学(七)数字签名算法
介绍数字签名。
RSA
\[ h = H(M) \\ S = h^d\bmod N \\ S^e = (h^e)^d = h\bmod N \]
El Gamal
选择随机数k,满足\(gck(k,\ p-1)=1\),计算密钥 \[ K = a^k\bmod p \]
用Euclidean扩展算法求解S \[ M = x\cdot K + k\cdot S\bmod(p-1) \] 也即 \[ S = k^{-1}(M-x\cdot K)\bmod(p-1) \] 签名就是\((M,K,S)\)$ \[ y^K\cdot K^S = (a^x)^K\cdot (a^k)^{k^{-1}(M-x\cdot K)} = a^M \bmod p \]
DSA
基于离散对数,生成320bit签名。
HMAC
带密钥的HASH。
相关文章