信息安全课程的第二个实验,主要是用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的数字签名设计与实现相关推荐

  1. C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统

    基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...

  2. python基于rsa的数字签名实现_OpenSSL和Python实现RSA Key数字签名和验证

    OpenSSL和Python实现RSA Key数字签名和验证,基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基 ...

  3. Java实现基于RSA的数字签名

    加密与数字签名的区别 1.加密保证了数据接受方的数据安全性.加密的作用是防止泄密. 2.签名保证了数据发送方的数据安全性.签名的作用是防止篡改. 数字签名的应用 问题:在比特币中,怎么证明这个交易是你 ...

  4. python基于rsa的数字签名实现_青岛宽客聚会期权定价公式基于python的实现

    点击上方蓝字,关注宽客空间 2020年8月16日,宽客空间走进石岭资产,参加了青岛宽客聚会的活动.本次活动分享题目为<期权定价公式基于python的实现>.本次活动的主讲人是来自青岛石岭资 ...

  5. 基于RSA的公钥基础体系下安全通信实战

    目录 简说RSA 服务器的初始密钥对和认证请求 证书认证机构CA 服务器安装CA签名证书 客户机 小结 从样板戏<红灯记>到好莱坞谍战大片<风语者Windtalkers>等,许 ...

  6. 一个基于RSA算法的Java数字签名例子

    ====================================================== 注:本文源代码点此下载 ================================= ...

  7. 基于RSA公匙--PGP邮件数字签名

    PGP (Pretty Good Privacy) 是一个基于RSA公匙加密体系的邮件加密软件.可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信 ...

  8. 基于RSA加密和Tkinter可视化的密码存储程序(可用于期末作业设计、Python练习、实用应用;抗错误输入、抗密码盗取)二:登录、注册界面

    此篇接上篇,有兴趣的可以去主页或专栏看看,没有的话咱直接开始: 基于RSA加密和Tkinter可视化的密码存储程序(可用于期末作业设计.Python练习.实用应用:抗错误输入.抗密码盗取)一:思路介绍 ...

  9. matlab中的addemup是什么,毕业论文-rsa密码体制的设计及matlab语言下的实现

    四川理工学院毕业论文RSA密码体制的设计及MATLAB语言下的实现学生XXX学号06121020230专业数学与应用数学班级20062指导教师张金山四川理工学院理学院二O一O年六月摘要RSA算法是一个 ...

最新文章

  1. 100G内存下,MySQL查询200G大表会OOM么?
  2. mysql mysqlhotcopy_MySQL备份之mysqlhotcopy与注意事项
  3. 解决前后端base64编码传递时的中文乱码问题
  4. 图文教程:使用MyEclipse的hibernate工具从数据库反向生成实体Bean
  5. 1.2 matlab数值数据的输出格式
  6. Visual C++——《可视化编程技术》实验报告——资源的应用—反弹的球
  7. 洛谷--P1067 多项式输出
  8. 打造自己的LinqProvider
  9. python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-找到百度首页按钮并点击...
  10. onpropertychange替代方案
  11. Linux内核编程广泛使用的前向声明(Forward Declaration)
  12. DEDE_5.7星星评分插件首发!
  13. FZU Problem 2168 防守阵地 I
  14. linux内核分析及应用 -- 输入输出(下)
  15. 基于Redis的分布式锁安全性分析-转
  16. 2008 r2 server sql 中文版补丁_sql server 2008 r2 sp4
  17. sdk的安装与环境配置
  18. 微信网页开发-长按二维码无法识别问题解决
  19. 一个leader,要有角色认知
  20. 小混混n多天不提编程,深刻反思

热门文章

  1. 软件测试中自上而下与自下而上的区别
  2. 企业号、企业微信、企业邮箱三者融合,IBOS微信生态掘金之路
  3. html音视频app制作,6款视频制作APP,让你成为短视频高手!
  4. 扣丁软件测试基础知识,苹果无线充电线圈揭秘,iphone8无线充电线圈介绍
  5. Spring框架快速入门
  6. 在Windows 7或Vista中配置磁盘碎片整理程序计划
  7. 微信小游戏开新手攻略
  8. 视觉和听觉的双重盛宴,富有正能量的B站美食UP主。
  9. ABP微服务系列学习-搭建自己的微服务结构(三)
  10. 使用log4j如何打印输出到日志文件