DSA数字签名算法(学生作业,非盈利非商用,侵权删)

数字签名算法(DSA)是使数字签名依赖于数学概念的联邦信息处理标准之一,或者我们可以说模幂运算的公式和离散对数问题,用于在该算法中对数字进行数字加密。

二、DSA原理
处理过程: (采用双重加密)
(1)使用SHA编码将发送文件加密产生128bit的数字摘要;
(2)发送方用自己的专用密钥对摘要再加密,形成数字签名;
(3)将原文和加密的摘要同时传给对方;
(4)接受方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生同一摘要;
(5)将解密后的摘要和收到的文件在接受方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性和保密性。

三、DSA算法的描述
  DSA是Schnorr和ElGamal签名算法的变形,该算法的安全性依赖于计算模数的离散对数的难度。
DSA签名中的公开密钥:

p    512~1024位的素数(可以在一组用户中共享)
q    160位长,并与 p-1 互素的因子(可以在一组用户中共享)
g    g=h(p-1)/q mod p,其中 h 小于 p-1 并且 h(p-1)/q mod p > 1
y    y=gx mod p (一个p位的数)
在标准最初版本中,p的长度固定为512位,这引起了许多批评,之后NIST改变了它。


DSA签名中的私人密钥:

x    x<q
DSA签名算法中的签名过程:

k选取小于q的随机数
r(签名)= (gk mod p) mod q
s(签名) = (k-1 ( H(m)+xr ))mod q
DSA签名算法中的验证过程:

w = s-1 mod q
u1 = (H(m)×w)mod q
u2 = (rw) mod q
v = ((gu1 × yu2) mod p) mod q
如果 v=r ,则签名被验证
对消息m签名时:
(1)Alice产生一个的随机数 k,k<q。
(2)Alice产生:
       r = (gk mod p) mod q
       s = (k-1 ( H(m)+xr ))mod q
其中,r 和 s 就是她的签名,她将它们发给 Bob。
(3)Bob通过计算来验证签名:
       w = s-1 mod q
       u1 = (H(m)×w) mod q
       u2 = (rw) mod q
       v = ((gu1 × yu2) mod p) mod q
如果, v=r,则签名有效。

四、DSA算法特点

1、DSA是以RSA为基础形成的
2、遵循“私钥签名,公钥验证”的原则

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值