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
考试系统系统包含1.添加试题、2.修改试题、3.查询试题、4.生成试卷和5.答题功能。
6.答题情况查询功能。
2024/1/21 7:29:09 1.1MB 考试系统
1
关于围猫游戏的基本实现,主要用java实现
2024/1/20 18:07:01 1.62MB 围猫 java
1
推箱子java实现源码,使用BFS嵌套方式实现。
2024/1/16 10:30:58 10KB 推箱子 java 源码
1
使用java制作标准化考试系统,里面详细介绍了怎样使用derby数据库进行题库的增删改查,和带图像题的处理以及选择题、判断题、多选题怎样处理
2024/1/15 12:25:10 4.56MB 考试系统
1
java实现文件上传到数据库
2024/1/15 10:46:49 3.45MB java 上传
1
关于动态规划算法的最长公共子序列的Java代码,帮助了解算法实现过程
2024/1/13 21:17:48 651B 算法
1
Java实现获取窗口句柄并操作窗口JNAJava实现获取窗口句柄并操作窗口JNA
2024/1/12 23:36:40 1.04MB JNA
1
使用java实现的超市管理系统。
主要功能包括:商品信息管理、发货、进货处理。
会员管理、用户购买商品、供应商管理.....等等
2024/1/6 15:06:16 2.93MB java 超市管理系统
1
DES算法为密码体制中的对称密码体制,是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。
这里以Java代码实现DES算法。
2024/1/5 21:03:38 4KB DESJava实现
1
共 768 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡