rsa算法的c语言实现

RSA 算法的 C 语言实现一、RSA 算法的描述 1、选取长度相等的两个大素数 p 和 q,计算其乘积: n=pq 然后随机选取加密密钥 e,使 e 和 (p–1)(q–1)互素。 最后用欧几里德扩展算法计算解密密钥 d,以满足 ed=1(mod(p–1)(q–1)) 即 d= e–1mod((p–1)(q–1)) e 和 n 是公钥,d 是私钥 2、加密公式如下: ci=mi^e( modn)3、解密时,取每一密文分组 ci 并计算: mi=ci^d(modn)Ci^d=(mi^e)^d= mi^(ed)=mi^[k(p–1) (q–1 )+1] =mimi^[k(p–1) (q –1)]=mi*1=mi4、消息也可以用 d 加密用 e 解密 二、C 源程序//RSA 算法的 C 程序实现 #includeintcandp(inta,intb,intc) //数据处理函数,实现幂的取余运算 {intr=1; b=b+1; while(b!=1) { r=r*a; r=r%c; b--; } printf(“%d\n“,r); returnr; }intfun(intx,inty) //公钥 e 与 t 的互素判断{Int t;while(y) { t=x;x=y;y=t%y;}if(x== 1) return0; //x 与 y 互素时返回 0 else return1; //x 与 y 不互素时返回 1 }voidmain() {int p,q,e,d,m,n,t,c,r;printf(“请输入两个素数 p,q:“);scanf(“%d%d“,n=p*q; printf(“计算得 n 为 %3d\n“,n); t=(p-1)*(q-1); //求 n 的欧拉数 printf(“计算得 t 为 %3d\n“,t); printf(“请输入公钥 e:“); scanf(“%d“,if(et||fun(e,t)) { printf(“e 不合要求,请重新输入 :“); //et 或 e 与 t 不互素时,重新输入 scanf(“%d“,} d=1;while(((e*d)%t)!=1) d++; //由公钥 e 求出私钥 d printf(“经计算 d 为 %d\n“,d); printf(“加密请输入 1\n“); //加密或解密选择 printf(“解密请输入 2\n“); scanf(“%d“,switch(r) { case1:printf(“请输入明文 m:“); //输入要加密的明文数字 scanf(“%d“,c=candp(m,e,n); printf(“密文为 %d\n“,c);break; case2:printf(“请输入密文 c:“); //输入要解密的密文数字 scanf(“%d“, m=candp(c,d,n); printf(“明文为 %d\n“,m);break; }}三、程序运行结果及相关说明 主函数实现求 N 的欧拉数、由公钥求解私钥、加密解密选择以及相应的密文明文输出。 子函数 candp 实现加密解密时的求幂取余运算,fun 实现 e 与 t 的互素判断,已验证 e 是否 符合要求。程序主体参考了网上的相关 RSA 算法程序,我对其中 e 的合法性判断、主函数 实现的顺序以及相关提示信息做了补充与修改并加上了注释,这样程序可读性更强,运行时 更容易操作,思路也更加严密。 当 P=43,q=59 时,对 134 进行加密,运行结果如下:第一次取 e 为 15,与 t 不互素,提示需重新输入,输入 13 后,便可以进行正确操作。 由于 int 型变量为十六位,因此 n 最大只能小于 65536,此程序只是对 RSA 算法的入门,无 法实现达到安全要求的数据位数。

用c语言实现蚂蚁算法,rsa算法的c语言实现相关推荐

  1. 前后台加解密的使用--SHA256算法 RSA算法 AES算法

    SHA256算法 sha256与md5一样是散列算法,不是加密算法,不存在解密的问题,因此是不可逆的,可以通过key+password,对密码进行加密,在后台进行比对,安全性比md5高一点,加密后生成 ...

  2. c语言字符串非对称加密,RSA算法C语言实现(支持任意位密钥)

    之前分享过三种常用MD5.SHA2和AES加密算法(点这里)实现源码,前三者分别属于哈希加密和对称加密,而另一种很常用的非对称加密RSA算法实现这次分享出来.RSA算法的原理和用途大家可以网上自行搜索 ...

  3. rsa加密c语言源码库,RSA加密算法源代码C语言实现.doc-资源下载在线文库www.lddoc.cn...

    RSA加密算法_源代码__C语言实现.doc RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名Ro ...

  4. C语言的EDS与RSA算法,数字签名原理eds算法是什么_生辰八字是什么算法

    数字签名算法sha-1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名技术原理介绍 数字签名算法sha 1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名算 ...

  5. 【信息安全技术】RSA算法的研究及不同优化策略的比较

    RSA算法的研究及不同优化策略的比较 第一章<信息安全技术>课程学习总结 第二章 阅读课外资料总结和综述 2.1 基于Python的web黑客攻击技术 2.1.1 网络钓鱼 2.1.2 域 ...

  6. RSA算法与维吉尼亚密码

    RSA算法 RSA算法描述 第1步:用两个很大的互异的质数p和q(p和q必须保密),计算它们的乘积n=pq:n是模数. 第2步:选择一个比n小的数e,它与(p-1)(q-1)互为质数,即除了1以外,e ...

  7. RSA算法以及所涉及的数论定理的简单证明

    理解RSA算法需要了解的数论定理全家桶 前言 "≡\equiv≡"符号的使用和模运算的规律简述 RSA算法 RSA算法的加密解密过程 RSA算法的加密解密实例 RSA算法的证明 欧 ...

  8. rsa算法程序代码php,C++ 实现 RSA算法

    一. RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大 ...

  9. RSA算法加解密的C语言实现

    RSA算法加解密的C语言实现 一. 实现的功能 二. 源代码 一. 实现的功能 用户输入明文 自动随机生成较大的数p和q,并对它们进行素性检测,检测成功之后,程序继续 计算Φ(n)的值,并求出它的所有 ...

最新文章

  1. Spark-Spark setMaster WordCount Demo
  2. WPF:自动执行机器人程序若干注意事项
  3. 一流科技CEO袁进辉:人工智能产业化困局和机遇 | 量子位·视点分享回顾
  4. IIS发布网页的基本操作
  5. python教程:循环(while和for)
  6. 设置电脑系统密码以及桌面密码
  7. 他山之石,可以攻玉--从伪代码的角度来理解排序算法
  8. 19_完成“我的订单”
  9. 多尺度图像增强Retinex相关算法学习及实现
  10. IPSAN 配置过程
  11. C语言利用回调函数实现qsort函数
  12. Arduino DHT11温湿度传感器数据示例
  13. win10 加快开机速度
  14. 服务器硬件维护指南和解决方案
  15. halcon与C#混合编程(三)数字识别
  16. 疯狂动物城简介第一台通用计算机,疯狂动物城 简介
  17. BOSS 直聘牛逼:取消 996,但不取消「周末加班费」
  18. Databuscanal对比
  19. Notion 上做英文阅读笔记
  20. MySQL DBA的必备参考,两位数据库资深专家呕心沥血之作

热门文章

  1. ABAP help click F1
  2. 某些equipment无法顺利download到CRM的原因
  3. IBASE archive write processing report RIBARCHA
  4. SAP Cloud for Customer(C4C) HTML mashup的运行时单步调试
  5. TCP和Web Socket混合使用的一个例子
  6. Docker Hello World容器运行报错的解决办法
  7. MYsql可以做独立数据库_mysql-用于独立应用程序Winforms的数据库
  8. 大数据的说法 正确的是_前端测试题:(解析)用于播放音频文件的正确HTML5元素是?...
  9. spring生命周期_理解Spring应用上下文生命周期
  10. 跳跃游戏Python解法