信息安全实验六:RSA数字签名算法 2019.06.01
实验六:RSA数字签名算法
一、实验目的
理解、掌握RAS数字签名算法的基本过程。
二、实验内容
- 熟悉MPIR大整数运算库函数的调用。
- 熟悉MD5散列的调用。
- 利用MPIR大整数运算库函数,实现RSA数字算法。要求:1)RSA模数为2048bit;2)能对任意文件进行签名、验证(调用MD5散列函数求文件的散列值,再对散列值进行签名)。
三、RSA数字签名算法基本原理
RSA具体实现步骤
第一步,随机选择两个不相等的质数p和q。
第二步,计算p和q的乘积n。
第三步,计算n的欧拉函数φ(n)。
第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
第五步,计算e对于φ(n)的模反元素d。
第六步,将n和e封装成公钥,n和d封装成私钥。
*现实中为了计算快捷,e一般取65537,
加密
me ≡ c (mod n) 信息m加密成C
解密
cd ≡ m (mod n)
因为已经有了RSA加密算法,所以RSA签名算法很简单,只需要将RSA加密算法的公钥私钥互换即可。即私钥加密,公钥解密。
由于需要任意长度的文件进行加密,所以先用MD5对文件进行hash,得到非常短的,且定长的一段32位的16进制字符串(128位2进制数字),然后用RSA签名即可。
四、实验过程
(上次的实验四RSA加密算法用mpir库的时候忘了把打印设置为16进制数,打印的是10进制数,非常不直观,这次把d全部改成了x)
关键代码:
和实验四几乎一模一样,只是把加解密的秘钥互换
五、实验结果
本文所有代码及资源稍后给出。
信息安全实验六:RSA数字签名算法 2019.06.01相关推荐
- dsa数字签名c语言编程,实验三DSA数字签名算法
<实验三DSA数字签名算法>由会员分享,可在线阅读,更多相关<实验三DSA数字签名算法(8页珍藏版)>请在人人文库网上搜索. 1.实验三 DSA数字签名算法姓 名: 学 号: ...
- RSA算法和RSA数字签名算法
一.引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题.公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中 ...
- RSA 数字签名算法(Java版)
数字签名算法Java版 还是上代码吧 public static final String SIGN_ALGORITHMS = "SHA1WithRSA";/*** RSA签名* ...
- mbedtls | 09 - 数字签名算法的配置与使用(RSA数字签名算法、ECDSA数字签名算法)
mbedtls系列文章 mbedtls | 01 - 移植mbedtls库到STM32的两种方法 mbedtls | 02 - 伪随机数生成器(ctr_drbg)的配置与使用 mbedtls | 03 ...
- rsa数字签名算法c语言实现,RSA算法的C++实现
RSA算法的C++实现 [摘要]公 钥密码体制出现以前,所有的密码算法基本上都是基于代替和置换.而公钥密码体制则是基于新的理论和技术:它突破了传统的代替与置换,是数学函数:它以非对 称的形式提供两个密 ...
- Python每日一编程小练习(2019.06.01)——柠檬水找零
题目: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元. ...
- java实现数字签名算法
文章目录 前言 一.数字签名简述 二.数字签名算法家谱 三.代码实现 1.引入jar包 2.RSA数字签名实现 总结 前言 数字签名是手写签名在计算机软件应用中的一种体现,同样起到了抗否认的作用.本文 ...
- ECDSA数字签名算法
一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准. 它 ...
- 数字签名算法---加密学习笔记(五)
介绍 签名:就有安全性,抗否认性 数字签名:带有密钥(公钥,私钥)的消息摘要算法 作用: 1. 验证数据的完整性 2. 认证数据来源 3. 抗否认 数字签名遵循:私钥签名,公钥验证 常用的数字签名算法 ...
最新文章
- php pdo 判断数据条数据,PDO一次查询一行数据
- PowerDesigner教程系列(三)概念数据模型
- 设c语言中 一个int型数据库,最新真实全国二级C选择题真题第1套
- 【error】深度优先搜索TypeError: unhashable type: ‘list‘
- C++用libcurl通过HTTP以表单的方式Post数据到服务器
- poj 1068 Parencodings
- datetime sql
- dms系统与mysql_Mysql的两种存储引擎以及区别
- QT表格QTableWidget在win10下纵横表头无分隔线的问题
- 基于Flash CS6和AS3.0编写的打企鹅游戏(类打地鼠)
- j计算机集成维护工具,USBOS v2.1电脑超级维护工具启动盘(集成最全winPE)
- ROSE HA,想说爱你不容易——为ROSE HA配置IP资源的LocalFailover
- java支付方法_java实现微信H5支付方法详解
- C语言蓝桥杯刷题:数字三角形
- 虚拟环境Vmware下改变Linux(CentOS7)IP地址
- mc用什么版本的java_MC版本Java版5大功能优势
- python文件开头含义
- 十分全面的传奇手游搭建教程
- SpringBoot:Sa-Token的具体介绍与使用
- 7、邮箱验证码的功能设计