精华内容
下载资源
问答
  • 2021-05-19 14:36:10

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

    编程之家小编现在分享给大家,也给大家做个参考。

    //

    // main.cpp

    // RSA

    //

    // Created by liujan on 10/21/14.

    // Copyright (c) 2014 liujan. All rights reserved.

    //

    #include

    #include "cmath"

    using namespace std;

    long long p = 1949,q = 3413;

    long long N = p * q;

    long long e = 13007,d = 511;

    //对a的b次幂取模 m(大数取模)

    long long Mod(long long a,long long b,long long m){

    long long r = 1;

    for (long long j = 0; j < b; j++){

    r = (r * a) % m;

    }

    return r;

    }

    //对输入信息进行rsa编码

    long long * rSAEncode(string message){

    size_t length = message.length();

    long long *ascii = new long long[length]; //存储信息的每个字符

    long long *code = new long long[length]; //存储每个字符的rsa编码

    for (size_t i = 0; i < length; i++){

    ascii[i] = message[i];

    }

    for (size_t i = 0; i < length; i++){

    code[i] = Mod(ascii[i],e,N ); //C=M^e (modN)

    }

    return code;

    }

    //根据rsa编码得到原来的信息

    string rsaDecode(long long code[],size_t n){

    long long *ascii = new long long[n];

    string message = "";

    for (size_t i = 0; i < n; i++){

    ascii[i] = Mod(code[i],d,N); //M=C^d (modN)

    message += ((char)(ascii[i]));

    }

    return message;

    }

    int main(int argc,const char * argv[]) {

    string message = "Hello World!";

    size_t length = message.length();

    long long *a = rSAEncode(message);

    string newmessage = rsaDecode(a,length);

    cout << newmessage << endl;

    return 0;

    }

    以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    总结

    以上是编程之家为你收集整理的RSA加密算法的C语言实现全部内容,希望文章能够帮你解决RSA加密算法的C语言实现所遇到的程序开发问题。

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    小编个人微信号 jb51ccc

    喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

    更多相关内容
  • RSA加密算法C语言实现

    2018-11-11 09:38:09
    RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的...
  • 博文---信息安全实践二之密码与隐藏技术2【数字水印&RSA加密算法实现RSA加密算法实现,利用C语言改正博文中的错误程序。
  • rsa 算法的c实现,希望对各位有所帮助
  • rsa算法c语言实现

    2018-05-10 13:44:53
    基于C语言实现RSA算法,实现过程基本和实验原理保持一致,由于编写过程一开始并没有进行实用性考虑,所以该算法输入仅支持固定位数的数字,但是通过适当修改可以支持char或者string类型的内容输入——buaa-albert
  • 一、RSA算法首先, 找出三个数, p, q, r,其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数p, q, r 这三个数便是 private key接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1)这个 m 一定存在, 因为 r ...

    一、RSA算法

    首先, 找出三个数, p, q, r,

    其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数

    p, q, r 这三个数便是 private key

    接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1)

    这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了

    再来, 计算 n = pq

    m, n 这两个数便是 public key

    编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a 《 n

    如果 a 》= n 的话, 就将 a 表成 s 进位 (s 《= n, 通常取 s = 2^t),

    则每一位数均小於 n, 然後分段编码

    接下来, 计算 b == a^m mod n, (0 《= b 《 n),

    b 就是编码後的资料

    解码的过程是, 计算 c == b^r mod pq (0 《= c 《 pq),

    於是乎, 解码完毕 等会会证明 c 和 a 其实是相等的 :)

    如果第三者进行窃听时, 他会得到几个数: m, n(=pq), b

    他如果要解码的话, 必须想办法得到 r

    所以, 他必须先对 n 作质因数分解

    要防止他分解, 最有效的方法是找两个非常的大质数 p, q,

    使第三者作因数分解时发生困难

    《定理》

    若 p, q 是相异质数, rm == 1 mod (p-1)(q-1),

    a 是任意一个正整数, b == a^m mod pq, c == b^r mod pq,

    则 c == a mod pq

    证明的过程, 会用到费马小定理, 叙述如下:

    m 是任一质数, n 是任一整数, 则 n^m == n mod m

    (换另一句话说, 如果 n 和 m 互质, 则 n^(m-1) == 1 mod m)

    运用一些基本的群论的知识, 就可以很容易地证出费马小定理的

    《证明》

    因为 rm == 1 mod (p-1)(q-1), 所以 rm = k(p-1)(q-1) + 1, 其中 k 是整数

    因为在 modulo 中是 preserve 乘法的

    (x == y mod z and u == v mod z =》 xu == yv mod z),

    所以, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq

    1. 如果 a 不是 p 的倍数, 也不是 q 的倍数时,

    则 a^(p-1) == 1 mod p (费马小定理) =》 a^(k(p-1)(q-1)) == 1 mod p

    a^(q-1) == 1 mod q (费马小定理) =》 a^(k(p-1)(q-1)) == 1 mod q

    所以 p, q 均能整除 a^(k(p-1)(q-1)) - 1 =》 pq | a^(k(p-1)(q-1)) - 1

    即 a^(k(p-1)(q-1)) == 1 mod pq

    =》 c == a^(k(p-1)(q-1)+1) == a mod pq

    2. 如果 a 是 p 的倍数, 但不是 q 的倍数时,

    则 a^(q-1) == 1 mod q (费马小定理)

    =》 a^(k(p-1)(q-1)) == 1 mod q

    =》 c == a^(k(p-1)(q-1)+1) == a mod q

    =》 q | c - a

    因 p | a

    =》 c == a^(k(p-1)(q-1)+1) == 0 mod p

    =》 p | c - a

    所以, pq | c - a =》 c == a mod pq

    3. 如果 a 是 q 的倍数, 但不是 p 的倍数时, 证明同上

    4. 如果 a 同时是 p 和 q 的倍数时,

    则 pq | a

    =》 c == a^(k(p-1)(q-1)+1) == 0 mod pq

    =》 pq | c - a

    =》 c == a mod pq

    首先是密钥对的生成:

    (1)选取两个大素数p和q(目前两个数的长度都接近512bit是安全的)

    (2)计算乘积n=p*q,Φ(n)=(p-1)(q-1),其中Φ(n)为n的欧拉函数(因为两素数乘积的欧拉函数等于两数分别减一后的乘积)

    (3)随机选取整数e(1《e《Φ(n))作为公钥d,要求满足e与Φ(n)的最大公约数为1,即两者互素

    (4)用Euclid扩展算法计算私钥d,已满足d * e ≡ 1 (mod Φ(n)),即d ≡ e^(-1) (mod Φ(n))。则e与n是公钥,d是私钥

    注意:e与n应公开,两个素数p和q不再需要,可销毁,但绝不可泄露。

    展开全文
  • rsa加密算法c语言代码

    千次阅读 2021-05-24 07:20:10
    如何用C语言实现RSA算法?上学期交的作业,已通过老师在运行时间上的测试 #include #include unsigned long prime1,prime2,ee; unsigned long *kzojld(unsigned long p,unsigned long q) //扩展欧几里得算法CSS布局...

    如何用C语言实现RSA算法?

    上学期交的作业,已通过老师在运行时间上的测试 #include #include unsigned long prime1,prime2,ee; unsigned long *kzojld(unsigned long p,unsigned long q) //扩展欧几里得算法CSS布局HTML小编今天和大家分享模逆 { unsigned long i=0,a=1,b=0,c=0,d=1,temp,mid

    高手请指点#include#include#include#include#includechars[100],*c;intn,e,d,i,C,j,k=0,len;intstr[100],b[30];unsignedgcd(unsigneda,unsignedb){if(a%b==0)returnb;elsereturngcd(b,a%b);}voidEgcd(inta,intb,int&x,int&y){//ax-by=1if(b==0||a==0){x=1

    72b81dfe5cef4fbf262ab1cc711f177e.gif

    RSA加密解密算法C语言代码

    #include#include#include#include#include#include#defineMAX100#defineLENsizeof(structslink)voidsub(inta[MAX],intb[MAX],intc[MAX]);structslink{intbignum[MAX];/*bignum[98]用来标记正负号,1正,0负bignum[99]来标记实际长度*/structsli

    RSA加密解密算法c语言程序

    #include#include#include//将十进制数转换成二进制,用于检验大素数p和qintzhuan_huan(intb,inta[],intk){intt,temp=-1;while(b>0){t=b%2;temp++;a[temp]=t;b=b/2;}returntemp;}//欧几里得算法,用于判断加密指数e是否符合要CSS布局HTML小编今天和大家分享intgcd(intn,intb

    RSA算法它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字 命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。

    RSA加密算法怎样用C语言实现? 急急急。。。

    输入数据 P=43, q=59 e=13 n=2537 d=937 =>(e=13,n=2537)为公钥,(d=937)/*数据只能是大写字母组成的字符串。 加密的时候,输入Y,然后输入要加密的文本(大写字母) 解密的时候,输入N,然后输入一个整数n表示密文的个数,然后n个整数表示加密时候得到的密文。 */ /*RSA algorithm */ #include #include #include #de

    CSS布局HTML小编今天和大家分享RSA算法的源代码(c语言)

    急CSS布局HTML小编今天和大家分享DES加密和RSA加密算法源代码(C语言版)

    如何用C语言来使用openssl rsa进行公钥加密,已有想要完整的程序,。

    1. 本程序使用2048位密钥对,每次加密时,原始数据的最大长度为245字节,加密后的密文长度为256字节.(采用打PADDING 的加密方式) 2. 如果所加密数据长度大于245字节,请分多次加密,后将密文按顺序存储;解密时,每次读取256字节,进行解密,将解密后的数

    如何用C语言程序实现RSA算法?

    CSS布局HTML小编今天和大家分享~具体程序

    #include "stdafx.h" #include #include int isP(int m) { int i; for(i=2;i0;m++) if(isP(m)) { k; return m; } } int main(int argc, char* argv[]) { int P,Q,E,D,i,k,fn,c=0,j=0,t=1,f1=1,l=2; int a[10]; long N0,N1; long PT,CT,N; prin

    展开全文
  • RSA加密算法c语言

    2015-06-03 00:29:47
    个人编的RSA加密程序,要想了解具体算法说明或者其他加密算法请关注我的博客----适合任何对算法理解不透彻的密码初学者和爱好者。
  • rsa加密算法 网上找了半天都没有知道到 下载要50积分的有点过分了 有问题欢迎私信讨论 非对称加密问题
  • 非对称加密算法RSA算法纯C语言代码实现,带测试demo
  • RSA加解密算法c语言实现

    千次阅读 2020-11-07 00:23:46
    c语言实现代码如下: #include<stdio.h> #include<string.h> void jiami(int e,int n,int len,int *zminw,int *miw)//加密算法 { int e1=e; for(int i=0;i<len;i++){ int r=1; e=e+1; while(e!=1)...

    c语言实现代码如下:

    #include<stdio.h>
    #include<string.h>
    void jiami(int e,int n,int len,int *zminw,int *miw)//加密算法
    {
    	int e1=e;
    	for(int i=0;i<len;i++){
    int r=1;
        e=e+1;
    while(e!=1)
    {
        r=zminw[i]*r;
        r=r%n;
        e--;
    }
    miw[i]=r;
    e=e1;}
    }
    void jiemi(int d,int n,int len,int *miw,int *jmw)//解密算法
    {
    	int d1=d;
    	for(int i=0;i<len;i++){
    	int r=1;
    	d=d+1;
    while(d!=1)
    {
      r=r*miw[i];
      r=r%n;
      d--;
    }
    jmw[i]=r;
    d=d1;}
    }
    void mwcf(int *miw,int len,int *bj,int *len2)//将密文转化为个位数的数组
    {
    	int k=0,j,h=0;
    for(int i=0;i<len;i++){
    	if(miw[i]>100&&miw[i]<110) 
    	{int a=miw[i]/100;int b=0;int c=miw[i]%100;k+=3;
    	 for(j=h;j<k;j++) {
          *
    
    ```c
    if(j==h) bj[j]=a; *斜体样式*
    	  if(j==h+1) bj[j]=b;
    	  if(j==h+2) bj[j]=c;}
    	h=k;
    	}
    	if(miw[i]<100&&miw[i]>10)  {int a=miw[i]/10;int b=miw[i]%10;k+=2;
    	for(j=h;j<k;j++){
        if(j==h) bj[j]=a;
    	if(j==h+1) bj[j]=b;}
    	h=k;
    	}
    	if(miw[i]>110){int a=miw[i]/100;int b=(miw[i]%100)/10;
    	int c=(miw[i]%100)%10;k+=3;
    	for(int j=h;j<k;j++){
    	if(j==h) bj[j]=a;
    	if(j==h+1) bj[j]=b;
    	if(j==h+2) bj[j]=c;}
        h=k;
    	}
    	if(miw[i]<10) {k+=1;bj[h]=miw[i];h++;}
    }
    *len2=k;
    }
    void miwzh(int *bj,char *miw3,int len2)//密文转化为字符串形式
    {
    for(int i=0;i<len2;i++)
    {
    miw3[i]=bj[i]+'0';
    }
    }
    int main()//0<minwen<n,也就是说明文M需要大于零,并且小于指数n。
    {
    int p=7,q=19;int fn,e,d=0,n;
    
    long int minwen,miwen,jmh;//单个数字加密测试
    char minw[1000],len,jmw1[1000],miw3[1000];//明文、长度、解密后的明文、密文的字符串表示
    int zminw[1000],miw[1000],jmw[1000];//ascall码值、密文、解密后的ascall码值
    int bj[1000],srmw[1000],len2;//才分后的密文、输入的带空格式密文、拆分后的长度
    char srdmiw[1000];//输入的字符串式密文
    n=p*q;    //pq的乘积
    fn=(p-1)*(q-1);    //n的欧拉函数φ(n)的值
    printf("φ(n)=%d,请输入一个与Φn互为质数且小于φ(n)的数e:",fn);
    scanf("%d",&e);
    for(int k=1;true;k++)  //计算模反元素d
    	{for(;(e*d-1)<=k*fn;d++)
    	{if((e*d-1)==k*fn)  break;}
         if((e*d-1)==k*fn)  break;
        }
    int t2;int k2;
    for(;true;){
    printf("1.加密明文       2.解密已加密明文       3.退出\n");
    printf("请选择操作:");
    scanf("%d",&t2);
    if(t2==1)
    {printf("请输入要加密的明文(一串字母):");
    scanf("%s",minw);
    len=strlen(minw);
    for(int i=0;i<len;i++)
    {zminw[i]=(int)minw[i];}//将明文转化为ascall码值
    jiami(e,n,len,zminw,miw);
    printf("加密后的密文:");
    for(int i=0;i<len;i++)
    printf("%d",miw[i]);
    putchar('\n');	
    mwcf(miw,len,bj,&len2);
    printf("拆分后的密文:");
    for(int i=0;i<len2;i++)
    	printf("%d",bj[i]);
    putchar('\n');}
    if(t2==2){                              
    printf("请输入要解密的密文:");
    miwzh(bj,miw3,len2);
    getchar();
    for(int i=0;i<len2;i++)
    	scanf("%c",&srdmiw[i]);
    printf("miw3的输出:");
    for(int i=0;i<len2;i++)
     printf("%c",miw3[i]);
    putchar('\n');
    printf("srdmiw的输出:");
    for(int i=0;i<len2;i++)
    	printf("%c",srdmiw[i]);
    putchar('\n');
    k2=0;//每一次循环都还回k2的值
    for(int i=0;i<len2;i++)
    {if(miw3[i]==srdmiw[i]) k2++;}
    if(k2==len2)  
    {
    jiemi(d,n,len,miw,jmw);
    printf("解密后的明文(ascall码值):");
    for(int i=0;i<len;i++)
    	printf("%d",jmw[i]);
    putchar('\n');
    for(int i=0;i<len;i++)
    	jmw1[i]=(char)jmw[i];
    printf("解密后的明文原文:");
    for(int i=0;i<len;i++)
    	printf("%c",jmw1[i]);
    putchar('\n');}
    else  printf("没有任何明文加密后为此密文。\n");}
    if(t2==3)  break;}
    return 0;
    }
    运行结果如下:
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201107002115605.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubm0L20wXzUxMTg0MzI3,size_16,color_FFFFFF,t_70#pic_center)
    
    
    
    展开全文
  • RSA加密算法(C语言实现

    千次阅读 2021-07-01 16:09:02
    这次轮到RSA加密算法了。RSA加密过程相对DES和MD5要简单很多,但作为现在还在使用的加密算法之一,它还是有需要认真思索的地方哒~ 首先是密钥对的生成: (1)选取两个大素数p和q(目前两个数的长度都接近512bit是...
  • C语言编程实现经典非对称加密算法——RSA加密算法
  • RSA加密算法代码实现

    千次阅读 2022-01-01 16:46:46
    C语言实现RSA加密算法,并将其优化到尽量快的速度。 算法描述 RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的...
  • 传统的加密方法是加密、解密使用同样的密钥,由发送者和接收者分别保存,在加密和解密时使用,采用这种方法的主要问题是密钥的生成、注入、存储、管理、分发等很复杂,特别是随着用户的增加,密钥的需求量成倍增加。...
  • rsa算法c语言实现

    2019-03-08 23:50:14
    为了在网上找一个rsa算法的代码实现想当不容易...代码是RSA加密算法C语言版本,大数代码是从网上找到的,性能上还有些问题,需要进一步优化。不过拿来做测试用是足够了。C++版本的可靠性、性能还有些问题就不放上来了。
  • C语言实现简单的RSA算法

    千次阅读 2021-05-22 09:35:33
    C语言实现简单的RSA算法 实验内容: 1、输入两个素数,然后生成一个随机数,计算出随机数的逆元,然后保存这些信息; 2、选择加密,则输入明文,输出密文; 3、选择解密,则输入密文,输出明文。 (要求有必要的文字...
  • 经典的对称加密算法RSA算法的C++实现版本,亲测完美运行
  • RSA算法C语言实现

    2021-05-19 10:50:23
    一、源文件三个rsa.h , rsa.c, main.c//rsa.h#include #define MAX_NUM 63001#define MAX_PRIME 251//! 返回代码#define OK 100#define ERROR_NOEACHPRIME 101#define ERROR_NOPUBLICKEY 102#define ERROR_GENERROR ...
  • 从第三方密码学库中抽离出来的RSA算法,去掉了不必要的依赖。效率非常好,可用于实际的工作中! 测试数据经过两个以上第三方密码学库验证,确保测试数据正确性。 test.cpp中包含精心编写的的测试用例,关键之处都有...
  • rsa加密解密算法C语言代码

    热门讨论 2010-12-26 13:03:28
    rsa加密解密算法C语言代码 #include #include #include <stdlib.h> #include <time.h> #include #include #define MAX 100 #define LEN sizeof(struct slink) void sub(int a[MAX],int b[MAX] ,int c[MAX] ); ...
  • rsa2048.rar RSA2048的C语言实现代码rsa2048.rar RSA2048的C语言实现代码
  • RSA算法详解及C语言实现

    万次阅读 多人点赞 2018-05-28 18:53:31
    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏...
  • rsa加密解密c语言算法Here you will learn about RSA algorithm in C and C++. 在这里,您将了解C和C ++中的RSA算法。 RSA Algorithm is used to encrypt and decrypt data in modern computer systems and other ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,356
精华内容 1,342
关键字:

rsa加密算法c语言实现