以往的文件或书信可以通过亲笔签名来证明其真实性,而通过计算机网络传输的信息则可以通过数字签名技术来实现其真实性的验证。
下面就以DSA算法为例,介绍数字签名算法。
DSA算法在1991年被美国国家标准与技术局(NIST)采纳为联邦数字签名标准,NIST称之为数字签名标准(DSS)。
(1)DSA中的参数:全局公钥(p,q,g):p为512~1024bit的大素数,q是(p-1)的素因子,为160比特的素数,g=h(p-1)/qmodp,且1<h1用户私钥x:x为0<x<q内的随机数用户公钥y:y=gxmodp用户为待签消息选取的秘密数k,k是满足0<k<q的随机数或伪随机数。
(2)签名过程用户对消息M的签名为(r,s),其中r≡(gkmodp)modq,s≡[k-1(H(M)+xr)]modq,H(M)是由MD4、MD5或SHA求出的杂凑值。
(3)验证过程设接收方收到的消息为M,签名为(r,s)。
计算:w≡(s)-1modq,u1≡[H(M)w]modqu2≡rwmodq,v≡[(gu1yu2)modp]modq检查v=r′是否成立,若成立,则认为签名有效。
这是因为若(M′,r′,s′)=(M,r,s),则:
2024/1/31 14:58:34 3.62MB C++ DSA
1
1、数字签名原理用RSA算法做数字签名,总的来说,就是签名者用私钥参数d加密,也就是签名;
验证者用签字者的公钥参数e解密来完成认证。
下面简要描述数字签名和认证的过程。
(1)、生成密钥为用户随机生成一对密钥:公钥(e,n)和私钥(d,n).(2)、签名过程a) 计算消息的散列值H(M).b) 用私钥(d,n)加密散列值:s=(H(M))modn,签名结果就是s.c) 发送消息和签名(M,s).(3)、认证过程a) 取得发送方的公钥(e,n).b) 解密签名s:h=smodn.c) 计算消息的散列值H(M).d) 比较,如果h=H(M),表示签名有效;
否则,签名无效。
根据上面的过程,我们可以得到RSA数字签名的框图如图2-1:图2-1RSA数字签名框图2、 假设Alice想和Bob通信,以本地两个文件夹Alice和Bob模拟两个用户,实现消息M和签名的模拟分发(1)、Alice通过RSA算法生成一对密钥:公钥(e,n)和私钥(d,n),将公私钥分别存入pubKey.txt和priKey.txt中。
pubKey.txt中公钥如下:priKey.txt中私钥如下: (2)、将Alice中的pubKey.txt拷到Bob中,模拟公玥的分发。
(3)、将Alice中的消息info.txt做散列,将散列后的值存入hashInfo.txt中。
(4)、将Alice中的消息hashInfo.txt和签名sign.txt拷到Bob中,实现M密文状态下的签名与模拟分发、消息传递。
(5)Bob取得公钥pubKey.txt,用公钥解密签名,计算消息的散列值H(M).比较,如果h=H(M),表示签名有效;
否则,签名无效。
后台运行结果如下:
2024/1/24 8:56:16 17KB java数字签名
1
2023/12/28 19:18:41 1.35MB
1
VC++使用RSA算法防止非法注册机破解软件浅谈如何利用VC++的RSA算法防止非法注册机注册软件,也就是防止软件被破解。
熟悉编程的朋友可能都知道,RSA公开密钥密码系统是由R.Rivest,A.Shamir,L.Adleman提出的,不仅仅可用于数据的加密,也可用于数字签名,其安全性比较高,用它来开发加密、解密系统的应用已经有很多了,希望通过这个类仿真,和同仁们共同切磋Vc++非法破解的防止。
本程序调用Miraclver4.82大数运算库。
1
DSA数字签名本程序实现DSA数字签名是学习和研究密码学的良好资源
2023/12/12 12:44:08 3.62MB DSA 数字签名 C++ 源代码
1
区块链技术深度剖析主要是将密码学基础:区块链与密码学、hash函数、公钥密码体制、数字签名等ppt
2023/11/19 15:31:05 4.78MB 区块链
1
这是我用C#编写的基于Socket网络编程技术,在网络上传输加密文件,并对其进行数字签名,在另一端进行解密,并验证签名的一个WinForm程序,里面涉及到的加密解密算法有对称密码算法DES和非对称密码算法RSA加密解密技术,并且用MD5加密技术实现了数字签名,希望可以帮助到大家!!!谢
2023/11/19 4:43:41 139KB C#Socket 加密解密文件
1
3.功能性:本系统实现数字内容的数字签名及验签功能。
首先,用户指定需签名的数字内容;
系统计算这份数字内容的Hash值;
然后系统对Hash值进行签名,完成文件的签名操作;
此外,系统中的验签算法可以判断签名是否合法。
4.创新性:目前,同类系统主要采用ECDSA或者SM2等标准数字签名算法进行签名,本系统基于白盒数字签名算法对文件签名,提高了不可信环境中用户签名私钥的安全性。
5.实用性:该系统以纯软件的方式实现不可信环境中的签名操作,成本低。
而且,产生的签名可以用标准算法进行验签,通用性强。
2023/11/14 12:40:31 54.98MB C++ HASH算法 余数系统 数字签名算法
1
用matlab实现RSA公钥密码体制的数字签名算法
2023/10/29 0:20:55 717B matlab RSA 数字签名
1
基于Openssl算法库实现的SM2算法。
实现数字签名和密钥交换,公钥加密没有实现。
全部源代码,需要Openssl库支持,VC工程。
KDF使用标准HASH算法,没有使用SM3。
可参考作者的SM3算法实现KDF。
ECC曲线使用SM2算法建议曲线,内含SM2建议曲线测试。
仅算法过程演示,不适用于工程应用,欢迎提供宝贵意见可进一步完善。
2023/10/26 3:06:58 9KB SM2 密钥交换 数字签名
1
共 102 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡