精华内容
下载资源
问答
  • 2021-05-19 18:01:46

    《RSA算法C语言代码(最新整理)》由会员分享,可在线阅读,更多相关《RSA算法C语言代码(最新整理)(5页珍藏版)》请在人人文库网上搜索。

    1、include #include #include #include #include char s100,*c;intn,e,d,i,C,j,k=0,len;int str100,b30;unsigned gcd(unsigned a, unsigned b )if(a%b=0)return b; elsereturn gcd(b,a%b);void Egcd(int a, int b,int &x, int &y)/ax-by=1if(b=0|a=0)x=1; y=0;return ;if(a122)bk=i; k+;for(j=i;ji;j-)cj=cj-1;ci= ;len+; bz+。

    2、1=bz+1+(z+1);break;clen = 0;printf(明文:);puts(c);int function()/系统功能选择页面int choice; printf(=n);printf(欢迎进入RSA算法n);printf(1-加密n);printf(2-解密n);printf(3-退出n);printf(=n);printf(请输入要选择的功能号:);scanf(%d,&choice); return choice;int main()int function(); int fc;printf(请输入初始明文(小写):);gets(s);/ puts(s);RSA();/提供。

    3、私钥和公钥while(1)fc=function();if(fc=1)/加密encrypt();else if(fc=2)/解密decrypt() ; else if(fc=3) break;elseprintf(输入有误,请重新输入!/n);return 0;“”“”At the end, Xiao Bian gives you a passage. Minand once said, people who learn to learn are very happy people. In every wonderful life, learning is an eternal theme. 。

    4、As a professional clerical and teaching position, I understand the importance of continuous learning, life is diligent, nothing can be gained, only continuous learning can achieve better self. Only by constantly learning and mastering the latest relevant knowledge, can employees from all walks of life keep up with the pace of enterprise development and innovate to meet the needs of the market. This document is also edited by my studio professionals, there may be errors in the document, if there are errors, please correct, thank you。

    更多相关内容
  • RSA算法C语言实现(附实验报告,代码,程序)
  • RSA算法C语言实现.zip

    2019-09-25 17:02:32
    C语言实现的RSA算法源码 Visual Studio工程 支持公钥加解密 私钥加解密
  • 经典的对称加密算法RSA算法的C++实现版本,亲测完美运行
  • RSA加密算法C语言实现

    2018-11-11 09:38:09
    RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的...
  • rsa算法c语言实现

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

    2018-05-10 13:44:53
    基于C语言实现的RSA算法,实现过程基本和实验原理保持一致,由于编写过程一开始并没有进行实用性考虑,所以该算法输入仅支持固定位数的数字,但是通过适当修改可以支持char或者string类型的内容输入——buaa-albert
  • 《(完整版)RSA算法C语言代码》由会员分享,可在线阅读,更多相关《(完整版)RSA算法C语言代码(5页珍藏版)》请在人人文库网上搜索。1、include #include #include #include #include char s100,*c; int n,e,d,i,C,j,k=...

    《(完整版)RSA算法C语言代码》由会员分享,可在线阅读,更多相关《(完整版)RSA算法C语言代码(5页珍藏版)》请在人人文库网上搜索。

    1、include #include #include #include #include char s100,*c; int n,e,d,i,C,j,k=0,len; int str100,b30; unsigned gcd(unsigned a, unsigned b ) if(a%b=0) return b; else return gcd(b,a%b); void Egcd(int a, int b,int y=0; return ; if(ab) Egcd(a,b%a,x,y); x=(int)(b*y+1)/a; else Egcd(a%b,b,x,y); y=(int)(a*x-1)。

    2、/b; void RSA() int p,q,N,Y; printf(请输入素数p和q:); scanf(%d %d, n=p*q; N=(p-1)*(q-1); 初始化随机数 产生随机整数e, e与N互质 /printf(n=%d N=%dn,n,N); srand( (unsigned)time( NULL ) );/ while(1) / e=rand()%N; / printf(e=%dn,e); if(e=0) continue; if(gcd(N,e)=1) break; /printf(e=%dn,e); Egcd(e,N,d,Y); / printf(d=%d Y=%dn,d,。

    3、Y); printf( 公钥 PU=e=%d,n=%dn,e,n); printf( 私钥 PR=d=%d,n=%dn,d,n); void encrypt() /加密函数 len=strlen(s); /hgprintf(len=%dn,len); for(i=0;ilen;i+) /去掉 s100 中的空格 if(si122) bk=i; k+; for(j=i;jlen-1;j+) sj=sj+1; len-; slen=0; /结束符 printf( 密文是: ); for(i=0;ilen;i+) C=1; /printf(shiji=%dn,si-97); for(int j=0;。

    4、je;j+) C=(C*(si-97)%n; / printf(C=%ldn,C); stri=C; printf(%d ,stri); printf(n); void decrypt() / 解密函数 c=(char*)malloc(len*sizeof(int); for(i=0;ilen;i+) / 实现解密 C=1; for(int j=0;jd;j+) C=(C*(stri)%n; / printf(C=%ldn,C); / printf(C=%dn,C); ci=C+97; ci = 0; / puts(c); for(int z=0;zk;z+) / 加空格 for(i=0; i。

    5、i;j-) cj=cj-1; ci= ; len+; bz+1=bz+1+(z+1); break; clen = 0; printf( 明文: ); puts(c); int function()/ 系统功能选择页面 int choice; printf(=n); printf(欢迎进入 RSA?法n); printf(1-加密n); printf(2-解密n); printf(3-退出n); printf(=n); printf( 请输入要选择的功能号: ); scanf(%d, return choice; int main() int function(); int fc; printf( 请输入初始明文 (小写 ):); gets(s); 提供私钥和公钥 加密 解密 / puts(s); RSA();/ while(1) fc=function(); if(fc=1)/ encrypt(); else if(fc=2)/ decrypt() ; else if(fc=3) break; else printf( 输入有误,请重新输入! /n); return 0;。

    展开全文
  • 非对称加密算法,RSA算法C语言代码实现,带测试demo
  • RSA算法C语言代码.pdf

    2020-11-12 01:14:30
    #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <time.h> char s[100]*c; int n,e,d,i,C,j,k=0,len; int str[100],b[30]; unsigned gcd(unsigned a, unsigned b ) { if(a
  • 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.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 103

    unsigned int MakePrivatedKeyd( unsigned int uiP, unsigned int uiQ );

    unsigned int GetPrivateKeyd( unsigned int iWhich );

    unsigned int MakePairkey( unsigned int uiP, unsigned int uiQ, unsigned int uiD );

    unsigned int GetPairKey( unsigned int &d, unsigned int &e );

    void rsa_encrypt( int n, int e, char *mw, int iLength, int *&cw );

    void rsa_decrypt( int n, int d, int *&cw, int cLength, char *mw );

    void outputkey();

    //rsa.c

    #include "rsa.h"

    //! 保存私钥d集合

    struct pKeyset

    {

    unsigned int set[ MAX_NUM ];

    unsigned int size;

    }pset;

    //! 保存公、私钥对

    struct pPairkey

    {

    unsigned int d;

    unsigned int e;

    unsigned int n;

    }pairkey;

    // 名称:isPrime

    // 功能:判断两个数是否互质

    //参数:m: 数a; n: 数b

    // 返回:m、n互质返回true; 否则返回false

    bool isPrime( unsigned int m, unsigned int n )

    {

    unsigned int i=0;

    bool Flag = true;

    if( m<2 || n<2 )

    return false;

    unsigned int tem = ( m > n ) ? n : m;

    for( i=2; i<=tem && Flag; i++ )

    {

    bool mFlag = true;

    bool nFlag = true;

    if( m % i == 0 )

    mFlag = false;

    if( n % i == 0 )

    nFlag = false;

    if( !mFlag && !nFlag )

    Flag = false;

    }

    if( Flag )

    return true;

    else

    return false;

    }

    // 名称:MakePrivatedKeyd

    // 功能:由素数Q、Q生成私钥d

    //参数:uiP: 素数P; uiQ: 素数Q

    // 返回:私钥d

    unsigned int MakePrivatedKeyd( unsigned int uiP, unsigned int uiQ )

    {

    unsigned int i=0;

    //! 得到所有与z互质的数( 私钥d的集合 )

    unsigned int z = ( uiP -1 ) * ( uiQ -1 );

    pset.size = 0;

    for( i=0; i

    {

    if( isPrime( i, z ) )

    {

    pset.set[ pset.size++ ] = i;

    }

    }

    return pset.size;

    }

    // 名称:MakePairKey

    // 功能:生成RSA公、私钥对

    //参数:uiP: 素数P; uiQ: 素数Q; uiD: 私钥d

    // 返回:错误代码

    unsigned int MakePairkey( unsigned int uiP, unsigned int uiQ, unsigned int uiD )

    {

    bool bFlag = true;

    unsigned int i = 0, e;

    unsigned int z = ( uiP-1 ) * ( uiQ-1 );

    unsigned int d = pset.set[uiD];

    //d=uiD;

    if( !isPrime( z, d ) )

    return ERROR_NOEACHPRIME;

    for( i=2; i

    {

    if( (i*d)%z == 1 )

    {

    e = i;

    bFlag = false;

    }

    }

    if( bFlag )

    return ERROR_NOPUBLICKEY;

    if( (d*e)%z != 1 )

    ERROR_GENERROR;

    pairkey.d = d;

    pairkey.e = e;

    pairkey.n = uiP * uiQ;

    return OK;

    }

    // 名称:GetPairKey

    // 功能:对外提供接口,获得公、私钥对

    //参数:uiP: 素数P; uiQ: 素数Q; uiD: 私钥d

    // 返回:

    unsigned int GetPairKey( unsigned int &d, unsigned int &e )

    {

    d = pairkey.d;

    e = pairkey.e;

    return pairkey.n;

    }

    // 名称:GetPrivateKeyd

    // 功能:对外提供接口,由用户选择ID得以私钥d

    //参数:iWhich: 用户选择私钥d的ID

    // 返回:私钥d值

    unsigned int GetPrivateKeyd( unsigned int iWhich )

    {

    if( pset.size >= iWhich )

    return pset.set[ iWhich ];

    else

    return 0;

    }

    // 名称:rsa_encrypt

    // 功能:RSA加密运算

    //参数:n: 公钥n; e: 公钥e; mw: 加密明文; iLength: 明文长度; cw: 密文输出

    // 返回:无

    void rsa_encrypt( int n, int e, char *mw, int mLength, int *&cw )

    {

    int i=0, j=0;

    __int64 temInt = 0;

    for( i=0; i

    {

    temInt = mw[i];

    if( e!=0 )

    {

    for( j=1; j

    {

    temInt = ( temInt * mw[i] ) % n;

    }

    }

    else

    {

    temInt = 1;

    }

    cw[i] = (int)temInt;

    }

    }

    // 名称:rsa_decrypt

    // 功能:RSA解密运算

    //参数:n: 私钥n; d: 私钥d; cw: 密文; cLength: 密文长度; mw: 明文输出

    // 返回:无

    void rsa_decrypt( int n, int d, int *&cw, int cLength, char *mw )

    {

    int i=0, j=-1;

    __int64 temInt = 0;

    for( i=0; i

    {

    mw[i] = 0;

    temInt = cw[i];

    if( d != 0 )

    {

    for( j=1; j

    {

    temInt = (__int64)( temInt * cw[i] ) % n;

    }

    }

    else

    {

    temInt = 1;

    }

    mw[i] = (char)temInt;

    }

    }

    void outputkey()

    {

    printf("PublicKey(e,n): (%d,%d)\n",pairkey.e,pairkey.n);

    printf("PrivateKey(d,n): (%d,%d)\n",pairkey.d,pairkey.n);

    }

    //main.c

    // 工程:RSA

    // 功能:RSA加、解密文件

    //作者:jlcss|ExpNIS

    #include

    #include

    #include

    #include "rsa.h"

    #define DECRYPT_FILE "RSA加密密文.txt"

    #define ENCRYPT_FILE "RSA解密明文.txt"

    //! 约束文件最大2M

    #define MAX_FILE 1024*1024*2

    // 名称:usage

    // 功能:帮助信息

    //参数:应用程序名称

    // 返回:提示信息

    void Usage( const char *appname )

    {

    printf( "\n\tusage:rsa -k 素数P 素数Q\n" );

    printf( "\tusage: rsa -e 明文文件 公钥e 公钥n\n" );

    printf( "\tusage: rsa -d 密文文件 私钥d 私钥n\n" );

    }

    // 名称:IsNumber

    // 功能:判断数字字符数组

    //参数:strNumber:字符数组

    // 返回:数字字组数组返回true,否则返回false;

    bool IsNumber( const char *strNumber )

    {

    unsigned int i;

    if( !strNumber )

    return false;

    for ( i = 0 ; i < strlen(strNumber) ; i++ )

    {

    if ( strNumber[i] < '0' || strNumber[i] > '9' )

    return false;

    }

    return true;

    }

    // 名称:IsPrimeNumber

    // 功能:判断素数

    //参数:num: 输入整数

    // 返回:素数返回true,否则返回false;

    bool IsPrimeNumber( unsigned int num )

    {

    unsigned int i;

    if( num <= 1 )

    return false;

    unsigned int sqr = (unsigned int)sqrt((double)num);

    for( i = 2; i <= sqr; i++ )

    {

    if( num % i == 0 )

    return false;

    }

    return true;

    }

    // 名称:FileIn

    // 功能:读取磁盘文件到内存

    //参数:strFile:文件名称;inBuff:指向文件内容缓冲区

    // 返回:实际读取内容大小(字节)

    int FileIn( const char *strFile, unsigned char *&inBuff )

    {

    int iFileLen=0, iBuffLen=0;

    //! 打开密文文件

    CFile file( strFile, CFile::modeRead );

    iFileLen = ( int )file.GetLength();

    if( iFileLen>MAX_FILE )

    {

    printf( "文件长度不能大于 %dM,!\n", MAX_FILE/(1024*1024) );

    goto out;

    }

    iBuffLen = iFileLen;

    inBuff = new unsigned char[iBuffLen];

    if( !inBuff )

    goto out;

    ZeroMemory( inBuff, iBuffLen );

    file.Read( inBuff, iFileLen );

    file.Close();

    out:

    return iBuffLen;

    }

    // 名称:FileOut

    // 功能:加/解密结果输出到当前目录磁盘文件中

    //参数:strOut指向输出字符缓冲区,输出大小len,strFile为输出文件

    // 返回:无

    void FileOut( const void *strOut, int len, const char *strFile )

    {

    //! 输出到文件

    CFile outfile( strFile , CFile::modeCreate | CFile::modeWrite );

    outfile.Write( strOut , len );

    outfile.Close();

    }

    // 名称:CheckParse

    // 功能:校验应用程序入口参数

    //参数:argc等于main主函数argc参数,argv指向main主函数argv参数

    // 返回:若参数合法返回true,否则返回false

    //备注:简单的入口参数校验

    bool CheckParse( int argc, char** argv )

    {

    bool bRes = false;

    if( argc != 4 && argc != 5 )

    goto out;

    if( argc == 4 && argv[1][1] == 'k' )

    {

    //! 生成公、私钥对

    if( !IsNumber( argv[2] ) ||

    !IsNumber( argv[3] ) ||

    atoi( argv[2] ) > MAX_PRIME ||

    atoi( argv[3] ) > MAX_PRIME )

    goto out;

    }

    else if( (argc == 5) && (argv[1][1] == 'e' || argv[1][1] == 'd') )

    {

    //! 加密、解密操作

    if( !IsNumber( argv[3] ) ||

    !IsNumber( argv[4] ) ||

    atoi( argv[3] ) > MAX_NUM ||

    atoi( argv[4] ) > MAX_NUM )

    goto out;

    }

    else

    Usage(*argv);

    bRes = true;

    out:

    return bRes;

    }

    // 名称:kOption1

    // 功能:程序k选项操作:由素数P、Q生成私钥d集合

    //参数:uiP: 程序入口参数P; uiQ: 程序入口参数Q

    // 返回:执行正确返回生成私钥数目,否则返回0

    unsigned int kOption1( unsigned int uiP, unsigned int uiQ )

    {

    unsigned int uiRes = 0;

    if( !IsPrimeNumber( uiP ) )

    {

    printf( "P输入错误,P必须为(0, %d]素数", MAX_PRIME );

    return uiRes;

    }

    if( !IsPrimeNumber( uiQ ) )

    {

    printf( "Q输入错误,Q必须为(0, %d]素数", MAX_PRIME );

    return uiRes;

    }

    if( uiP == uiQ )

    {

    printf( "素数P与素数Q相同,很容易根据公钥n开平方得出素数P和Q,这种加密不安全,请更换素数!\n" );

    return uiRes;

    }

    printf( "正在生成私钥d集合......\n" );

    uiRes = MakePrivatedKeyd( uiP, uiQ );

    return uiRes;

    }

    //! 程序主函数

    int main( int argc, char **argv )

    {

    unsigned int p , q , d , n , e;//two prime p & q, public key(n, e) , private key(n , d)

    CheckParse(argc,argv );

    d=4828; //uid

    if(argc == 4)

    {

    p = atoi( argv[2] );

    q = atoi( argv[3] );

    MakePrivatedKeyd(p, q);

    MakePairkey(p, q, d );

    outputkey();

    }

    else if(argc == 5)

    {

    char FileName[20];

    strcpy(FileName, argv[2]);

    int len;

    if(argv[1][1] == 'e' )

    {

    unsigned char *inBuffer=(unsigned char *)malloc(MAX_FILE); //输入缓冲区

    int *cw=(int *)malloc(MAX_FILE);

    len = FileIn(FileName , inBuffer);

    e = atoi(argv[3]);

    n = atoi(argv[4]);

    rsa_encrypt( n, e, (char *)inBuffer, len, cw );

    FileOut( cw, 4*len, DECRYPT_FILE );

    }

    else if(argv[1][1] == 'd')

    {

    char *Buffer=(char *)malloc(MAX_FILE); //输入缓冲区

    int *cw=(int *)malloc(MAX_FILE);

    len = FileIn(FileName, (unsigned char *&)cw);

    d = atoi(argv[3]);

    n = atoi(argv[4]);

    rsa_decrypt( n, d, cw, len, Buffer );

    FileOut( Buffer, len/4, ENCRYPT_FILE );

    }

    }

    return 0;

    }

    二、运行方法及结果

    a103b79ce6cc?tdsourcetag=s_pctim_aiomsg

    展开全文
  • RSA_C++实现,rsa算法c语言实现,C,C++源码
  • RSA算法C语言代码.docx

    2020-08-07 07:26:36
    #in elude <stdlib.h> #in elude <stdio.h> #in elude <stri ng.h> #in elude <math.h> #in elude <time.h> char s[100]*c; int n ,e,d,i,C,j,k=O,le n; int str[100],b[30]; un sig ned gcd(un sig ned a, un sig n
  • #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <time.h> char s[100]*c; int n,e,d,i,C,j,k=0,len; int str[100],b[30]; unsigned gcd(unsigned a, unsigned b ) { if(a%
  • 实现素数验证,加密解密等功能。可以对一串字符进行加密解密等操作,但运算速度较慢。
  • rsa加密算法 网上找了半天都没有知道到 下载要50积分的有点过分了 有问题欢迎私信讨论 非对称加密问题
  • 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)
    
    
    
    展开全文
  • C语言实现简单的RSA算法

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

    2021-05-21 12:40:50
    } } void RSA() { int p,q,N,Y; printf("请输入素数p和q:"); scanf("%d %d",&p,&q); n=p*q; N=(p-1)*(q-1); //printf("n=%d N=%d\n",n,N); srand( (unsigned)time( NULL ) ); //初始化随机数 while(1) //产生随机...
  • 之前分享过三种常用MD5、SHA2和AES加密算法(点这里)实现源码,前三者分别属于哈希加密和对称加密,而另一种很常用的非对称加密RSA算法实现这次分享出来。RSA算法的原理和用途大家可以网上自行搜索。虽然其算法原理很...
  • 非对称加密RSA算法c语言实现

    千次阅读 2019-12-01 16:04:05
    相对于“对称加密算法”这种方法也叫做“非对称加密算法”。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密 (privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对...

空空如也

空空如也

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

rsa算法c语言

友情链接: 4.rar