DSA加密算法是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。它是一种公开密钥算法,用作数字签名。DSA加密算法使用公开密钥,为接受者验证数据的完整性和数据发送者的身份,它也可用于由第三方去确定签名和所签数据的真实性。

信息交流中,接收方希望收到的信息未被窜改(信息完整性),还希望接收到的信息确由自己认定的发送方所发(信息来源有效性),那么接收方和发送方就可以约定,共同使用DSA加密算法来实现。

算法中应用了下述参数:

p:L bits长的素数。L是64的倍数,范围是512到1024;

q:p - 1的160bits的素因子;

g:g = h^((p-1)/q) mod p,h满足h < p - 1, h^((p-1)/q) mod p > 1;

x:私钥。x为一个随机或伪随机生成的整数,其值满足0

y:公钥。y=powm(g,x,p)。

注意:

1、整数p,q,g可以公开,也可以仅由一组特定用户共享。

2、私钥x和公钥y称为一个密钥对(x,y),私钥只能由签名者本人独自持有,公钥则可以公开发布。密钥对可以在一段时间内持续使用。

签名产生过程如下:

1. P产生随机数k,k < q;

2. P计算 r = ( g^k mod p ) mod q

s = ( k^(-1) (H(m) + xr)) mod q

签名结果是( m, r, s )。

3. 验证时计算 w = s^(-1)mod q

u1 = ( H( m ) * w ) mod q

u2 = ( r * w ) mod q

v = (( g^u1 * y^u2 ) mod p ) mod q

若v = r,则认为签名有效。

DSA加密算法的安全性:

DSA加密算法主要依赖于整数有限域离散对数难题,素数P必须足够大,且p-1至少包含一个大素数因子以抵抗Pohlig &Hellman算法的攻击。M一般都应采用信息的HASH值。DSA加密算法的安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。

重要特点:两个素数公开

DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。

小知识之公开密钥:

公开密钥也称为非对称密钥,每个人都有一对唯一对应的密钥:公开密钥(简称公钥)和私人密钥(简称私钥),公钥对外公开,私钥由个人秘密保存;用其中一把密钥加密,就只能用另一把密钥解密。

php中 使用dsa算法,DSA加密算法解析相关推荐

  1. c语言编程实现dsa算法,椭圆曲线加密算法的C语言实现.doc

    椭圆曲线加密算法的C语言实现 毕业设计(论文) 题目: 椭圆曲线加密算法的C语言实现 院(系) 信息科学与工程学院 专 业 电子信息工程 届 别 07级 学 号 0715212026 姓 名 王正辉 ...

  2. 密码学专题 非对称加密算法指令概述 DSA算法指令

    DSA算法和DSA指令概述 DSA算法是美国国家标准的数字签名算法,只具备数字签名的功能不具备密钥交换的功能 生成DSA参数然后生成DSA密钥,DSA参数决定了DSA密钥的长度 三个指令 首先是dsa ...

  3. Java中4大基本加密算法解析

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一, 大家可以查看RFC2045- RFC2049, 上面有MIME的详细规范. 简单的java加密算法有: BASE64 严格地说, ...

  4. 下面算法中,不属于公开密钥加密算法的是()。D

    下面算法中,不属于公开密钥加密算法的是().D A.ECC B.DSA C.RSA D.DES 常用的公钥加密算法有RSA.DSA.ElGamal和ECC. 常用的对称加密算法有DES.3DES.ID ...

  5. [签名算法]DSA 算法

    DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard). DSA ...

  6. 奇妙的安全旅行之DSA算法

    hi,大家好,我是开发者FTD.今天我们来介绍一下非对称加密算法中的DSA算法. DSA 算法简介 DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名 ...

  7. RSA算法与DSA算法的区别

    当我们在Linux/Unix系统(windows下需用git的bash工具)中通过生成ssh认证密钥时,你要(用-t type来)选择创建一对RSA或者DSA密钥.这两者之间有什么区别?是什么原因让人 ...

  8. java dsa算法_DSA算法

    DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard). DSA ...

  9. 用DSA算法实现数字签名

    下面是一个在JAVA语言中,使用DSA签名算法来进行进行数字签名的一个示例. DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NI ...

最新文章

  1. mapinfo在线地图插件_表格中如何可视化地址数据?用 SeaTable 的地图插件很方便...
  2. jQuery弹出框示例
  3. 参考文献中杂志名字问题
  4. 以孩子兄弟链表为存储结构,请设计递归算法求树的高度
  5. HBase的BulkLoad详解
  6. Bootstrap分页功能
  7. 官宣了!百度36亿美元收购YY直播,一个用户“值”87.4美元
  8. (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
  9. 你了解东大六维空间嘛?
  10. OSChina 周一乱弹 —— 为单身狗准备的菜
  11. 一个产品的风险预测怎么写_创业计划书中,项目风险评估怎么写?
  12. Python函数初始
  13. IDEA的插件,IDEA强大的插件库
  14. 计算机视觉的相关会议,计算机视觉相关会议
  15. 如何查看PDF的坐标
  16. 软件设计一点通 | 抽象文档模式详解
  17. 中科爱讯双频串口WiFi探针TZ5001 产品介绍
  18. windows系统下安装JDK8
  19. TFN T700系列吹缆机产品怎么样?好不好用?
  20. 为什么区块链是互联网的100倍?

热门文章

  1. JS、JNS、JP(JPE)、JNP(JPO)指令详解、从原理上解释
  2. 纯css3圆柱模板立体图
  3. 关闭office提示:为什么要冒险,获取正版office
  4. 在线网校平台搭建的流程
  5. FIELD-SYMBOLS 动态内表
  6. 成熟的人不问过去,聪明的人不问现在,豁达的人不问未来~!
  7. 4210: 孙壕请一盘青岛大虾呗【递归/注意结束条件】
  8. 壕!程序员摆25台iPhone X求婚 闺蜜1人1台
  9. cs231n:assignment2——Q1: Fully-connected Neural Network
  10. docker 容器常用命令及基本操作