9.1.2 数字签名算法的家谱

数字签名算法主要包括RSA、DSA和ECDSA共3种算法。其中,RSA算法源于整数因子分解问题,DSA和ECDSA算法源于离散对数问题。

作为非对称加密算法,RSA算法堪称典型,同样也是数字签名算法中的经典。基于RSA算法密钥,结合消息摘要算法可形成对应的签名算法。如结合消息摘要算法MD5算法,可形成MD5withRSA算法。

DSA算法是继RSA算法后出现的基于DSS的数字签名算法,旨在形成数字签名标准。DSA算法主要为后续数字签名算法的形成奠定基础。

ECDSA算法是椭圆曲线加密算法ECC与DSA算法的结合,相对于传统签名算法,它具有速度快、强度高、签名短等优点,其用途也越来越广泛。

上述算法中,在Java语言中都可获得相应的支持。其中,Java 6完全实现了DSA算法,部分RSA算法需要由Bouncy Castle提供支持,ECDSA算法则完全需要Bouncy Castle提供支持。