实验RSA数字签名算法

一、实验目的

理解、掌握RAS数字签名算法的基本过程。

二、实验内容

  1. 熟悉MPIR大整数运算库函数的调用。
  2. 熟悉MD5散列的调用。
  3. 利用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相关推荐

  1. dsa数字签名c语言编程,实验三DSA数字签名算法

    <实验三DSA数字签名算法>由会员分享,可在线阅读,更多相关<实验三DSA数字签名算法(8页珍藏版)>请在人人文库网上搜索. 1.实验三 DSA数字签名算法姓 名: 学 号: ...

  2. RSA算法和RSA数字签名算法

    一.引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题.公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中 ...

  3. RSA 数字签名算法(Java版)

    数字签名算法Java版 还是上代码吧 public static final String SIGN_ALGORITHMS = "SHA1WithRSA";/*** RSA签名* ...

  4. mbedtls | 09 - 数字签名算法的配置与使用(RSA数字签名算法、ECDSA数字签名算法)

    mbedtls系列文章 mbedtls | 01 - 移植mbedtls库到STM32的两种方法 mbedtls | 02 - 伪随机数生成器(ctr_drbg)的配置与使用 mbedtls | 03 ...

  5. rsa数字签名算法c语言实现,RSA算法的C++实现

    RSA算法的C++实现 [摘要]公 钥密码体制出现以前,所有的密码算法基本上都是基于代替和置换.而公钥密码体制则是基于新的理论和技术:它突破了传统的代替与置换,是数学函数:它以非对 称的形式提供两个密 ...

  6. Python每日一编程小练习(2019.06.01)——柠檬水找零

    题目: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元. ...

  7. java实现数字签名算法

    文章目录 前言 一.数字签名简述 二.数字签名算法家谱 三.代码实现 1.引入jar包 2.RSA数字签名实现 总结 前言 数字签名是手写签名在计算机软件应用中的一种体现,同样起到了抗否认的作用.本文 ...

  8. ECDSA数字签名算法

    一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准. 它 ...

  9. 数字签名算法---加密学习笔记(五)

    介绍 签名:就有安全性,抗否认性 数字签名:带有密钥(公钥,私钥)的消息摘要算法 作用: 1. 验证数据的完整性 2. 认证数据来源 3. 抗否认 数字签名遵循:私钥签名,公钥验证 常用的数字签名算法 ...

最新文章

  1. php pdo 判断数据条数据,PDO一次查询一行数据
  2. PowerDesigner教程系列(三)概念数据模型
  3. 设c语言中 一个int型数据库,最新真实全国二级C选择题真题第1套
  4. 【error】深度优先搜索TypeError: unhashable type: ‘list‘
  5. C++用libcurl通过HTTP以表单的方式Post数据到服务器
  6. poj 1068 Parencodings
  7. datetime sql
  8. dms系统与mysql_Mysql的两种存储引擎以及区别
  9. QT表格QTableWidget在win10下纵横表头无分隔线的问题
  10. 基于Flash CS6和AS3.0编写的打企鹅游戏(类打地鼠)
  11. j计算机集成维护工具,USBOS v2.1电脑超级维护工具启动盘(集成最全winPE)
  12. ROSE HA,想说爱你不容易——为ROSE HA配置IP资源的LocalFailover
  13. java支付方法_java实现微信H5支付方法详解
  14. C语言蓝桥杯刷题:数字三角形
  15. 虚拟环境Vmware下改变Linux(CentOS7)IP地址
  16. mc用什么版本的java_MC版本Java版5大功能优势
  17. python文件开头含义
  18. 十分全面的传奇手游搭建教程
  19. SpringBoot:Sa-Token的具体介绍与使用
  20. 7、邮箱验证码的功能设计

热门文章

  1. 浅谈——工科生如何撰写学术论文
  2. 5G系统——MICO模式
  3. NTP时间戳和UTC时间戳互转及其原理
  4. linux 软件安装及卸载
  5. 炒股:如何安全地追热点
  6. 外罚函数法(一):外罚函数的构造
  7. 数据分析师8大经典问题
  8. ArcGIS JavaScript for API(003):geojsonlayer
  9. Python编程基础(2)
  10. SSD性能测试工具-AS_SSD Benchmark