首页 > 编程语言 >RSA加密算法

RSA加密算法

时间:2022-11-06 17:25:31浏览次数:35  
标签:return int RSA 密钥 printf 加密算法

RSA加密算法概述

       RSA算法是一种经典的非对称加密算法,密钥一般由三个数字构成:N、E、D。对于一些信息,我们总有办法将其转化为数字,设该数字为X,对应的密文是Y。则对X的加密算法是:Y=XN mod E,解密算法是:X=YN mod D。

       由此看出,若甲要向乙发信息,只需要知道N和E就能加密信息,乙仅用N和D就能解密。一般在这种情况下,乙会生成N、E、D三个数字,然后通过一般的信息传输方式将N和E发给甲(由于窃听者并不能得到D,所以届时ta不能解密甲到时候要给乙发送到密文)。这样便解决了对称密码算法的密钥在传输中可能造成的密钥泄露问题。

如何生成密钥

       1.取两个质数P、Q。则N = P * Q。

        2.求(P-1),(Q-1)的最小公倍数L。

        3.E与L是互质的关系,由此便可以求出一个E。

        4.(E * D)mod L = 1,由此关系可以得到唯一D。

C语言生成密钥的代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 //函数功能:求最大公约数 
 5 int gcd(int m,int n)
 6 {
 7     int c;
 8     while(n != 0) 
 9     {
10         c = m % n;
11         m = n;
12         n = c;
13     }
14     return m;
15 }
16 
17 //函数功能:求最小公倍数 
18 int lcm(int m,int n)
19 {
20     int c,a;
21     a = m * n;
22     while(n != 0) 
23     {
24         c = m % n;
25         m = n;
26         n = c;
27     }
28     return a / m;
29 }
30 
31 int main()
32 {
33     int p,q;
34     int N,L,E,D;
35     int count;
36     printf("请输入两个质数:"); 
37     scanf("%d,%d",&p,&q); 
38     
39     N = p * q;
40     printf("N = %d\n",N);
41     
42     L = lcm((p - 1),(q - 1));    
43     
44     printf("可供选择的E值如下:\n");
45     for(E = 2;E < L;E++)
46     {
47         if(gcd(E,L) == 1)    printf("%d ",E);
48         if(E == L - 1)    printf("\n");
49     }
50     printf("请输入你想要的E值:");
51     scanf("%d",&E);
52     
53     printf("D值:");
54     for(D = 2;D < L;D++)
55     {
56         if((E * D) % L == 1)    printf("%d\n",D);
57     }
58     
59     system("pause");
60     return 0;    
61 }

结果如下图:

 

标签:return,int,RSA,密钥,printf,加密算法
From: https://www.cnblogs.com/Yu-Hongruojir/p/16863073.html

相关文章

  • 京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用
    摘要随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计......
  • LeetCode_Stack_589. N-ary Tree Preorder Traversal N 叉树的前序遍历【栈,迭代】【简
    目录​​一,题目描述​​​​英文描述​​​​中文描述​​​​示例与说明​​​​二,解题思路​​​​三,AC代码​​​​C++​​​​Java​​​​四,解题过程​​​​第一博​......
  • RSA加密算法
    RSA加密算法5分钟了解RSA加解密算法:https://zhuanlan.zhihu.com/p/365330981验证数据完整性:私钥签名-公钥验签;消息加密:公钥加密-私钥解密;......
  • 使用OpenSSL进行RSA加密解密
    生成一个密钥:opensslgenrsa-outtest.key1024这里-out指定生成文件的。需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密。......
  • 【五期杨志】CCF-A(NeurIPS'20) Self-supervised multimodal versatile networks
    AlayracJB,RecasensA,SchneiderR,etal.Self-supervisedmultimodalversatilenetworks[J].AdvancesinNeuralInformationProcessingSystems,2020,33:2......
  • c#中字符串加密算法
    MD5加密算法里也是hash算法,根据彩虹数据库1-1匹配网址:www.cmd5.comusingSystem.Security.Cryptography;//MD5加密算法所在的命名空间stringstr="张三";//用户......
  • [单片机] rsa2048签名算法
    RSA-2048具有617个十进制数字,共2048bits。是目前最大的RSA数字,有20万美金的悬赏用于对RSA-2048的因式分解。RSA-2048:为非对称成加密算法,发送方和接收方均各有一组公钥和私......
  • [python] bin转dfu 脚本 RSA2048 签名 解密 公钥 私钥
    /lib/importhashlibimportosimportsysimporttimefromdatetimeimportdatetimeimportrsaclassmy_sign():pubkey=""privkey=""def__init__(self,pa......
  • AES_GCM_256加密算法
    中文手册:21.2.4EVP_CIPHER_CTX_OpenSSL中文手册原理:AES加密算法原理(C++实现)_算法小艾的博客-CSDN博客_aesc++根据openssl来写的话参考这个文章大坑的aesGCM解密算......
  • RSA算法详解
    基础知识RSA设计\(m^{ed}\equiv1\:(mod\:n)\)RSA密钥生成第一步,随机选择两个不相等的质数p和q。如61和53。(质数越大越安全。)第二步,计算p和q的乘积n。把61和5......