php中 使用dsa算法,DSA加密算法解析
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加密算法解析相关推荐
- c语言编程实现dsa算法,椭圆曲线加密算法的C语言实现.doc
椭圆曲线加密算法的C语言实现 毕业设计(论文) 题目: 椭圆曲线加密算法的C语言实现 院(系) 信息科学与工程学院 专 业 电子信息工程 届 别 07级 学 号 0715212026 姓 名 王正辉 ...
- 密码学专题 非对称加密算法指令概述 DSA算法指令
DSA算法和DSA指令概述 DSA算法是美国国家标准的数字签名算法,只具备数字签名的功能不具备密钥交换的功能 生成DSA参数然后生成DSA密钥,DSA参数决定了DSA密钥的长度 三个指令 首先是dsa ...
- Java中4大基本加密算法解析
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一, 大家可以查看RFC2045- RFC2049, 上面有MIME的详细规范. 简单的java加密算法有: BASE64 严格地说, ...
- 下面算法中,不属于公开密钥加密算法的是()。D
下面算法中,不属于公开密钥加密算法的是().D A.ECC B.DSA C.RSA D.DES 常用的公钥加密算法有RSA.DSA.ElGamal和ECC. 常用的对称加密算法有DES.3DES.ID ...
- [签名算法]DSA 算法
DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard). DSA ...
- 奇妙的安全旅行之DSA算法
hi,大家好,我是开发者FTD.今天我们来介绍一下非对称加密算法中的DSA算法. DSA 算法简介 DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名 ...
- RSA算法与DSA算法的区别
当我们在Linux/Unix系统(windows下需用git的bash工具)中通过生成ssh认证密钥时,你要(用-t type来)选择创建一对RSA或者DSA密钥.这两者之间有什么区别?是什么原因让人 ...
- java dsa算法_DSA算法
DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard). DSA ...
- 用DSA算法实现数字签名
下面是一个在JAVA语言中,使用DSA签名算法来进行进行数字签名的一个示例. DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NI ...
最新文章
- mapinfo在线地图插件_表格中如何可视化地址数据?用 SeaTable 的地图插件很方便...
- jQuery弹出框示例
- 参考文献中杂志名字问题
- 以孩子兄弟链表为存储结构,请设计递归算法求树的高度
- HBase的BulkLoad详解
- Bootstrap分页功能
- 官宣了!百度36亿美元收购YY直播,一个用户“值”87.4美元
- (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
- 你了解东大六维空间嘛?
- OSChina 周一乱弹 —— 为单身狗准备的菜
- 一个产品的风险预测怎么写_创业计划书中,项目风险评估怎么写?
- Python函数初始
- IDEA的插件,IDEA强大的插件库
- 计算机视觉的相关会议,计算机视觉相关会议
- 如何查看PDF的坐标
- 软件设计一点通 | 抽象文档模式详解
- 中科爱讯双频串口WiFi探针TZ5001 产品介绍
- windows系统下安装JDK8
- TFN T700系列吹缆机产品怎么样?好不好用?
- 为什么区块链是互联网的100倍?