基于RSA的数字签名设计与实现
信息安全课程的第二个实验,主要是用java、js,前端页面用的html写的。
页面成果展示:
基本公私钥生成
实验环境为win10系统,使用git命令行工具——git bash生成公私钥。生成私钥,密钥长度为1024bit并从私钥中提取公钥
生成私钥为:
生成公钥为:
项目结构
项目代码
下图仅展示部分,毕竟CSDN的资源上传机制有点儿恶心。
js
// 私钥var PRIVATE_KEY = "MIICXAIBAAKBgQDEhB7aS6mIsLO/istzfO76pwn2yf1xvR/m8ar2kRzxOpeR5aRJ\n" +"z4GRRL54gfAQoltC8yeUZJhkTm0/t1Lm1sGu6wbA/FTG6WuzoKIv1y9/K8eQlFtF\n" +"94SNYWZZY+ysjal7qUQ/2IxgQ2ir5csRcs0o7n0xfBwc7a+THW/yZc7fWwIDAQAB\n" +"AoGAJQ8hXltcakmgbCO5gFr0GlK7301yPSvEQ2IZsovlIFzDTqE23TCDp6iGHuWq\n" +"JwjnGvYN5b8eufPMSHLC8INZXNVL0bLuUHarTgzYM3xaV2qMQcFX/hLyTpUkgKXK\n" +"9BF6Qntm0mKtNelHv32kKM+/FZCXn5UidonQjr67Cik/i1kCQQD00mk699HTBGyG\n" +"fcVSCQRrv+zC69kiTv/5pUJiIVEmV559B7cfAVOV0UPWLChUgie3Oadj+QqVFygz\n" +"MkRyf2AXAkEAzX0W2AtWYT8j9/rwxkcRHOAMwwDI7U/eUv9Wt1D70mcOCxacnsoc\n" +"Q+rd1K1MFxDqz3a9bX87xILyWwf98MohXQJAe4HiwHLhEZl7vmWYtAgEiO8r3DHr\n" +"OpmsHR833BV+wN8W/3By+1tJ9Zy6okNonSmEK7UUMyUiJ5ClIR7M1Q5ZRQJAOlQ2\n" +"ps7ZDzOoFx0hOXc00Vh75uKTJmHUfwTB7blMMhZUsysQ/DXsvg6uN0+V2LpRnOBc\n" +"tvc11PtCpjpnh/EodQJBAIA65DZFtGnzdINxrGDdf2dt6Z5L7gSpi/SToLh5Nsfh\n" +"PE0jA3/DshNCwv7CpAhShItlO+nOnnACeBa8MYOmzWE="; // 公钥var PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEhB7aS6mIsLO/istzfO76pwn2\n" +"yf1xvR/m8ar2kRzxOpeR5aRJz4GRRL54gfAQoltC8yeUZJhkTm0/t1Lm1sGu6wbA\n" +"/FTG6WuzoKIv1y9/K8eQlFtF94SNYWZZY+ysjal7qUQ/2IxgQ2ir5csRcs0o7n0x\n" +"fBwc7a+THW/yZc7fWwIDAQAB";//将message通过sha512 哈希算法运算出hash function sha512ToHash() {let m = document.getElementById("message").value;let hashedif (m.length == 0){hashed = "数据为空,无法计算HASH";}else{hashed = hex_sha512(m);hashed = hashed.slice(0,60);}document.getElementById("showHashed").value = hashed; }// 私钥+得到的hash——RSA签名算法——》生成签名 function getSignature() {let hashed = document.getElementById("showHashed").value;let encrypt = new JSEncrypt();encrypt.setPrivateKey('-----BEGIN PRIVATE KEY-----' + PRIVATE_KEY + '-----END PRIVATE KEY-----');let encrypted;if (hashed.length == 0) {encrypt = "缺少数据,无法签名";document.getElementById('signature').value = encrypt;} else {encrypted = encrypt.encrypt(hashed);console.log('加密前数据:%o', hashed);console.log('加密后数据:%o', encrypted);document.getElementById('signature').value = encrypted;} }
页面:
就是很简单的form表单
<div style="margin-left: 430px"><h1>签名生成</h1> </div> <form action=""><table align="center"><tr><td>输入Messsage:</td></tr><tr><td><input type="text" id="message" style="width: 260px"/></td><td><button type="button" οnclick="sha512ToHash()">SHA-512</button></td></tr><tr><td>消息摘要:</td></tr><tr><td><input type="text" id="showHashed" style="width: 450px"/></td><td><button type="button" οnclick="getSignature()">私钥签名</button></td></tr><tr><td>签名:</td></tr><tr><td><input type="text" id="signature" style="width: 450px"></input></td></tr></table> </form>
基于RSA的数字签名设计与实现相关推荐
- C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统
基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...
- python基于rsa的数字签名实现_OpenSSL和Python实现RSA Key数字签名和验证
OpenSSL和Python实现RSA Key数字签名和验证,基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基 ...
- Java实现基于RSA的数字签名
加密与数字签名的区别 1.加密保证了数据接受方的数据安全性.加密的作用是防止泄密. 2.签名保证了数据发送方的数据安全性.签名的作用是防止篡改. 数字签名的应用 问题:在比特币中,怎么证明这个交易是你 ...
- python基于rsa的数字签名实现_青岛宽客聚会期权定价公式基于python的实现
点击上方蓝字,关注宽客空间 2020年8月16日,宽客空间走进石岭资产,参加了青岛宽客聚会的活动.本次活动分享题目为<期权定价公式基于python的实现>.本次活动的主讲人是来自青岛石岭资 ...
- 基于RSA的公钥基础体系下安全通信实战
目录 简说RSA 服务器的初始密钥对和认证请求 证书认证机构CA 服务器安装CA签名证书 客户机 小结 从样板戏<红灯记>到好莱坞谍战大片<风语者Windtalkers>等,许 ...
- 一个基于RSA算法的Java数字签名例子
====================================================== 注:本文源代码点此下载 ================================= ...
- 基于RSA公匙--PGP邮件数字签名
PGP (Pretty Good Privacy) 是一个基于RSA公匙加密体系的邮件加密软件.可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信 ...
- 基于RSA加密和Tkinter可视化的密码存储程序(可用于期末作业设计、Python练习、实用应用;抗错误输入、抗密码盗取)二:登录、注册界面
此篇接上篇,有兴趣的可以去主页或专栏看看,没有的话咱直接开始: 基于RSA加密和Tkinter可视化的密码存储程序(可用于期末作业设计.Python练习.实用应用:抗错误输入.抗密码盗取)一:思路介绍 ...
- matlab中的addemup是什么,毕业论文-rsa密码体制的设计及matlab语言下的实现
四川理工学院毕业论文RSA密码体制的设计及MATLAB语言下的实现学生XXX学号06121020230专业数学与应用数学班级20062指导教师张金山四川理工学院理学院二O一O年六月摘要RSA算法是一个 ...
最新文章
- 100G内存下,MySQL查询200G大表会OOM么?
- mysql mysqlhotcopy_MySQL备份之mysqlhotcopy与注意事项
- 解决前后端base64编码传递时的中文乱码问题
- 图文教程:使用MyEclipse的hibernate工具从数据库反向生成实体Bean
- 1.2 matlab数值数据的输出格式
- Visual C++——《可视化编程技术》实验报告——资源的应用—反弹的球
- 洛谷--P1067 多项式输出
- 打造自己的LinqProvider
- python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-找到百度首页按钮并点击...
- onpropertychange替代方案
- Linux内核编程广泛使用的前向声明(Forward Declaration)
- DEDE_5.7星星评分插件首发!
- FZU Problem 2168 防守阵地 I
- linux内核分析及应用 -- 输入输出(下)
- 基于Redis的分布式锁安全性分析-转
- 2008 r2 server sql 中文版补丁_sql server 2008 r2 sp4
- sdk的安装与环境配置
- 微信网页开发-长按二维码无法识别问题解决
- 一个leader,要有角色认知
- 小混混n多天不提编程,深刻反思