Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630320
  • 博文数量: 125
  • 博客积分: 8703
  • 博客等级: 中将
  • 技术积分: 1102
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-10 17:48
文章分类

全部博文(125)

文章存档

2012年(2)

2011年(3)

2010年(11)

2009年(1)

2008年(12)

2007年(58)

2006年(38)

分类: Java

2007-07-30 17:14:42

3.公开密钥数字签名算法(签名)
  
    DSA(Digital Signature Algorithm,数字签名算法,用作数字签名
标准的一部分),它是另一种公开密钥算法,它不能用作,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用性,成为网络安全体系的基本构件之一。
  
    DSA签名算法中用到了以下参数:
    p是L位长的素数,其中L从512到1024且是64的倍数。
    q是160位长且与p-1互素的因子。
     ,其中h是小于p-1并且满足 大于1的任意数。
    x是小于q的数。
    
  
    另外,算法使用一个单向散列函数H(m)。标准指定了安全散列算法(SHA)。三个参数p,q和g是公开的,且可以被网络中所有的用户公有。私人密钥是x,公开密钥是y。
  
    对消息m签名时:
  
    (1) 发送者产生一个小于q的随机数k。
  
    (2) 发送者产生:
   
    r和s就是发送者的签名,发送者将它们发送给接受者。
  
    (3) 接受者通过计算来验证签名:
  
    如果v=r,则签名有效。
  
    DSA签名:
  
    公开密钥:
    p 512位到1024位的素数
    q 160位长,并与p-1互素的因子
     ,其中h是小于p-1并且满足 大于1的任意数。
    
    私人密钥:
    x小于q
    签名:
    k选取小于q的随机数
  
    验证:
  如果v=r,则签名被验证。
阅读(1083) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~