用c语言实现蚂蚁算法,rsa算法的c语言实现
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语言实现相关推荐
- 前后台加解密的使用--SHA256算法 RSA算法 AES算法
SHA256算法 sha256与md5一样是散列算法,不是加密算法,不存在解密的问题,因此是不可逆的,可以通过key+password,对密码进行加密,在后台进行比对,安全性比md5高一点,加密后生成 ...
- c语言字符串非对称加密,RSA算法C语言实现(支持任意位密钥)
之前分享过三种常用MD5.SHA2和AES加密算法(点这里)实现源码,前三者分别属于哈希加密和对称加密,而另一种很常用的非对称加密RSA算法实现这次分享出来.RSA算法的原理和用途大家可以网上自行搜索 ...
- rsa加密c语言源码库,RSA加密算法源代码C语言实现.doc-资源下载在线文库www.lddoc.cn...
RSA加密算法_源代码__C语言实现.doc RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名Ro ...
- C语言的EDS与RSA算法,数字签名原理eds算法是什么_生辰八字是什么算法
数字签名算法sha-1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名技术原理介绍 数字签名算法sha 1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名算 ...
- 【信息安全技术】RSA算法的研究及不同优化策略的比较
RSA算法的研究及不同优化策略的比较 第一章<信息安全技术>课程学习总结 第二章 阅读课外资料总结和综述 2.1 基于Python的web黑客攻击技术 2.1.1 网络钓鱼 2.1.2 域 ...
- RSA算法与维吉尼亚密码
RSA算法 RSA算法描述 第1步:用两个很大的互异的质数p和q(p和q必须保密),计算它们的乘积n=pq:n是模数. 第2步:选择一个比n小的数e,它与(p-1)(q-1)互为质数,即除了1以外,e ...
- RSA算法以及所涉及的数论定理的简单证明
理解RSA算法需要了解的数论定理全家桶 前言 "≡\equiv≡"符号的使用和模运算的规律简述 RSA算法 RSA算法的加密解密过程 RSA算法的加密解密实例 RSA算法的证明 欧 ...
- rsa算法程序代码php,C++ 实现 RSA算法
一. RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大 ...
- RSA算法加解密的C语言实现
RSA算法加解密的C语言实现 一. 实现的功能 二. 源代码 一. 实现的功能 用户输入明文 自动随机生成较大的数p和q,并对它们进行素性检测,检测成功之后,程序继续 计算Φ(n)的值,并求出它的所有 ...
最新文章
- Spark-Spark setMaster WordCount Demo
- WPF:自动执行机器人程序若干注意事项
- 一流科技CEO袁进辉:人工智能产业化困局和机遇 | 量子位·视点分享回顾
- IIS发布网页的基本操作
- python教程:循环(while和for)
- 设置电脑系统密码以及桌面密码
- 他山之石,可以攻玉--从伪代码的角度来理解排序算法
- 19_完成“我的订单”
- 多尺度图像增强Retinex相关算法学习及实现
- IPSAN 配置过程
- C语言利用回调函数实现qsort函数
- Arduino DHT11温湿度传感器数据示例
- win10 加快开机速度
- 服务器硬件维护指南和解决方案
- halcon与C#混合编程(三)数字识别
- 疯狂动物城简介第一台通用计算机,疯狂动物城 简介
- BOSS 直聘牛逼:取消 996,但不取消「周末加班费」
- Databuscanal对比
- Notion 上做英文阅读笔记
- MySQL DBA的必备参考,两位数据库资深专家呕心沥血之作
热门文章
- ABAP help click F1
- 某些equipment无法顺利download到CRM的原因
- IBASE archive write processing report RIBARCHA
- SAP Cloud for Customer(C4C) HTML mashup的运行时单步调试
- TCP和Web Socket混合使用的一个例子
- Docker Hello World容器运行报错的解决办法
- MYsql可以做独立数据库_mysql-用于独立应用程序Winforms的数据库
- 大数据的说法 正确的是_前端测试题:(解析)用于播放音频文件的正确HTML5元素是?...
- spring生命周期_理解Spring应用上下文生命周期
- 跳跃游戏Python解法