数字签名标准(DSS)的研究与实现
1. 引言 5
2.数论基础 6
2.1 基本定义 6
2.2 散对数问题 7
3.数字签名标准DSS 9
3.1 DSA算法描述 9
3.1.1 DSA算法参数 9
3.1.2 DSA签名过程 9
3.1.3 DSA签名验证 10
3.2 DSA算法证明 10
3.3 DSA算法变形 11
3.3.1 Yen和Laih的改进方法1 12
3.3.2 Yen和Laih的改进方法2 12
3.3.3 Naccache的改进方法 12
4. DSS参数产生 13
4.1 DSA素数产生 13
4.1.1 Miller-Rabin概率素性检验算法 13
4.1.2 DSA素数产生算法 14
4.1.3 任意长度素数生成算法 16
4.2 DSA的随机数产生算法 16
4.2.1 产生m个DSA私钥的算法 16
4.2.2 产生m个DSA每消息密钥数的算法 17
4.2.3 SHA-1构造函数G(t,c) 17
4.2.4 利用SHA-1构造任意长度随机数 18
4.3 DSA其他参数的产生 18
4.3.1 产生DSA的g算法 18
4.3.2 计算 的算法 19
4.3.3 SHA-1算法 19
5. 数字签名标准DSS的Java实现 24
5.1 DSA素数产生的Java实现 27
5.1.1 Miller-Rabin概率素性检验算法的Java实现 27
5.1.2 DSA素数产生算法的Java实现 28
5.1.3 任意长度素数生成算法 30
5.2 DSA随机数产生算法的Java实现 31
5.2.1 产生m个DSA私钥的算法的Java实现 31
5.2.2 产生m个DSA每消息秘密数的算法的Java实现 32
5.2.3 利用SHA-1构造单向函数G(t,c)算法的Java实现 33
5.2.4 利用SHA-1构造任意长度随机数的Java实现 34
5.3 DSA其他参数产生算法的Java实现 35
5.3.1 生成DSA的g算法的Java实现 35
5.3.2 计算 算法的Java实现 36
5.3.3 生成DSA公钥的Java实现 36
5.3.4 求模幂 的Java实现 37
5.3.5 SHA-1的Java实现 38
5.4 本文Java实现的数字签名标准(DSS)测试 38
5.4.1 本文Java实现的DSS签名测试 38
5.4.2本文Java实现的SHA-1测试 39
5.4.3本文Java实现的其他参数测试 40
6. DSS数字签名的应用 41
结束语 42
致谢 43
参考文献 44
1