实现数字签名的方法有很多,但应用最广泛的数字签名方法主要有三种,即RSA签名、DSS签名和Hash签名。这三种算法可单独使用,也可综合在一起使用。
1.基于RSA的数字签名算法。该算法的数学理论是基于大素数因子分解难题,属于非对称签名算法,是最流行的一种签名算法,其安全性取决于大数的因子分解难解性。
2.基于DSA的数字签名算法。DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,美国NIST将其作为数字签名标准(Digital Signature Standard,简写DSS)。该算法的数学理论是基于整数有限域离散对数难题,其安全强度和速度均低于RSA算法。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。DSA算法的安全性也依赖于有限域上的离散对数问题,其优点是不涉及专利问题。
3.基于Hash的数字签名算法。该算法是通过散列算法,变换成固定长度的输出,该输出就是散列值,这种转换是一种压缩映射。也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来确定输入值。该算法也称之为数字摘要法(Digital Digest)、数字指纹法(Digital Finger Print)。常用的Hash算法有MD2、MD5、SHA-1,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。