c语言rc4加解密(rc4加密算法)

本篇文章给大家谈谈c语言rc4加解密,以及rc4加密算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、RC4 与 DES 哪个算法最安全2、易语言解密文件(用了一晚上写的加密,解密不出来了)哪位高手给写下解密!用的RC4(就是第二个)3、怎么解密rc4加密的word文件?4、IDEA加密算法的C语言实现5、uniapp如何加密解密rc4

RC4 与 DES 哪个算法最安全

随机密钥加密算法:RC4

位密码算法:DES 三重DES(Triple-DES)仍然是很安全的,但是也只是在别无他法的情况下的一个较好的选择。显然高级加密标准(AES)是一个更好的加密算法,NIST用AES代替Triple-DES作为他们的标准(下面有更详细的讨论)。其他较好的算法包括另外两个AES的变种算法Twofish和Serpent-也称为CAST-128,它是效率和安全的完美结合。这几个算法不仅比DES更安全,而且也比DES的速度更快。为什么要使用一些又慢又不安全的算法呢?SHA1是一个哈希函数,而不是一个加密函数。作为一个哈希函数,SHA1还是相当优秀的,但是还需要几年的发展才能用作加密算法。如果你正在设计一个新系统,那么谨记你可能会在若干年后用SHA1代替目前的算法。我再重复一遍:只是可能。呵呵,希望能帮到你!谢谢望采纳哦!

c语言rc4加解密(rc4加密算法)

易语言解密文件(用了一晚上写的加密,解密不出来了)哪位高手给写下解密!用的RC4(就是第二个)

你的第一行 是“ 123”还是“123”,多了个空格看见吗?

解密数据 (加密处理, “123”, 2)

这样可以了,

怎么解密rc4加密的word文件?

推荐用Advanced.Office.Password.Recovery破解加密码的office文档,如果属于“弱密码”很容易破解。密码强度高了(如密码位数多、数字和字母、特殊符号组合等),破解很费时间。

IDEA加密算法的C语言实现

1、数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。

2、常见加密算法

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;

RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快;

IDEA(International Data Encryption Algorithm)国际数据加密算法:使用 128 位密钥提供非常强的安全性;

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法;

BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;

其它算法,如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。

比如说,MD5,你在一些比较正式而严格的网站下的东西一般都会有MD5值给出,如安全焦点的软件工具,每个都有MD5。

3、例程:

#includestdio.h

#includeprocess.h

#includeconio.h

#includestdlib.h

#define maxim 65537

#define fuyi 65536

#define one 65536

#define round 8

unsigned int inv(unsigned int xin);

unsigned int mul(unsigned int a,unsigned int b);

void cip(unsigned int IN[4],unsigned int OUT[4],unsigned int Z[7][10]);

void key(unsigned int uskey[9],unsigned int Z[7][10]);

void de_key(unsigned int Z[7][10],unsigned int DK[7][10]);

void main()

 int i,j,k,x;

    unsigned int Z[7][10],DK[7][10],XX[5],TT[5],YY[5];

    unsigned int uskey[9];

FILE *fpout,*fpin;

printf(“\n Input Key”);

for(i=1;i=8;i++)

    scanf(“%6u”,uskey[i]);

for(i=0;i9;i++)

    uskey[i]=100+i*3;

    key(uskey,Z);/*产生加密子密钥*/

    de_key(Z,DK);/*计算解密子密钥*/

    if((fpin=fopen(“ekey.txt”,”w”))==NULL)

    {

    printf(“cannot open file!”);

    exit(EXIT_FAILURE);

    }

    for(i=0;i7;i++)

    {

    for(j=0;j10;j++)

    fprintf(fpin,”%6u”,Z[i][j]);

    fprintf(fpin,”\n”);

    }

    fclose(fpin);

    

    /*XX[1..5]中为明文*/

    for(i=0;i4;i++) XX[i]=2*i+101;

    clrscr();

    printf(“Ming wen %6u %6u %6u %6u \n”,XX[0],XX[1],XX[2],XX[3]);

    if((fpin=(fopen(“ideaming.txt”,”w”)))==NULL)

    {printf(“cannot open file!”);

    exit(EXIT_FAILURE);

    }

    fprintf(fpin,”%6u,%6u,%6u,%6u \n”,XX[0],XX[1],XX[2],XX[3]);

    fclose(fpin);

    for(i=1;i=30000;i++)

    cip(XX,YY,Z);/*用密钥Z加密XX中的明文并存在YY中*/

    printf(“\n\n Mingwen %6u %6u %6u %6u \n”,YY[0],YY[1],YY[2],YY[3]);

 if((fpin=fopen(“ideamiwn.txt”,”w”))==NULL)

 {

 printf(“cannot open file!”);

    exit(EXIT_FAILURE);

    }

    fprintf(fpout,”%6u %6u %6u %6u\n”,YY[0],YY[1],YY[2],YY[3]);

    {

    printf(“cannot open file!”);

    exit(EXIT_FAILURE);

    }

    fprintf(fpout,”%6u %6u %6u %6u \n”,YY[0],YY[1],YY[2],YY[3]);

    fclose(fpout);

    for(i=1;i=30000;i++)

    cip(YY,TT,DK);/*encipher YY to TT with Key DK*/

    printf(“\n Jie Mi %6u %6u %6u %6u \n”,TT[0],TT[1],TT[2],TT[3]);

    if((fpout=fopen(“dideaout.txt”,”w”))==NULL)

    {

    printf(“cannot open file!”);

    exit(EXIT_FAILURE);

    }

    fprintf(fpout,”%6u %6u %6u %6u \n”,TT[0],TT[1],TT[2],TT[3]);

    fclose(fpout);

    }

    /* 此函数执行IDEA算法中的加密过程*/

    

    void cip(unsigned int IN[4],unsigned int OUT[4],unsigned int Z[7][10])

    {

    unsigned int r,x1,x2,x3,x4,kk,t1,t2,a;

    x1=IN[0];x2=IN[1];x3=IN[2];x4=IN[3];

    for(r=1;r=8;r++)

    {

    /* 对64位的块进行分组运算*/

    x1=mul(x1,Z[1][r]);x4=mul(x4,Z[4][r]);

    x2=x2+Z[2][r]one;x3=(x3+Z[3][r])one;

    /* MA结构的函数 */

    kk=mul(Z[5][r],(x1^x3));

    t1=mul(Z[6][r],(kk+(x2^x4))one;

    /* 随机变换PI*/

    x1=x1^t1;x4=x4^t2;a=x2^t2;x2=x3^t1;x3=a;

    }

    /* 输出转换*/

    OUT[0]=mul(x1,Z[1][round+1]);

    OUT[3]=mul(x4,Z[1][round+1]);

    OUT[1]=(x3+Z[2][round+1])one;

    OUT[2]=(x2+Z[3][round+1])one;

    }

    

    /* 用高低算法上实现乘法运算*/

    unsigned int mul(unsigned int a,unsigned int b)

    {

    long int p;

    long unsigned q;

    if(a==0) p=maxim-b;

    else if(b==0) p=maxim-a;

    else

    {

    q=(unsigned long)a*(unsigned long)b;

    p=(qone)-(q16);

    if(p=0) p=p+maxim;

    {

    return (unsigned) (pone);

    }

    

    /*通过Euclidean gcd算法计算xin的倒数*/

    unsigned int inv(unsigned int xin)

    {

    long n1,n2,q,r,b1,b2,t;

    if(xin==0)

    b2=0;

    else

    {n1=maxim;n2=xin;b2=1;b1=0;

    do{

    r=(n1%n2);q=(n1-r)/n2;

    if(r==0)

    if(b20) b2=maxim+b2;

    else

    {n1=n2;n2=r;

    t=b2;

    b2=b1-q*b2;b1=t;

    }

    }while(r!=0);

    }

    return (unsigned long int)b2;

    }

/*产生加密子密钥Z*/

    void key(unsigned int uskey[9],unsigned int Z[7][10])

    {

    unsigned int S[54];

    int i,j,r;

    for(i=1;i9;i++)

    S[i-1]=uskey[i];

    /* shifts */

    for(i=8;i54;i++)

    {

    if(i+2)%8==0)/* 对于S[14],S[22],…进行计算 */

    S[i]=((S[i-7]0)^(S[i-14]7)one;

    else if((i+1)%8==0)/* 对于S[15],S[23],…进行计算 */

    S[i]=((S[i-15]9)^(S[i-14]7)one;

    else

    S[i]=((S[i-7]9)^(S[i-6]7)one;

    }

    /*取得子密钥*/

    for(r=1;r=round+1;r++)

      for(j=1;j7;j++)

      Z[j][r]=S[6*(r-1)+j-1];

    }

    

    /* 计算解子密钥DK */

    void de_key(unsigned int Z[7][10],unsigned int DK[7][10])

    {

    int j;

    for(j=1;j=round+1;j++)

    {DK[1][round-j+2]=inv(Z[1][j]);

    DK[4][round-j+2]=inv(Z[4][j]);

    if(i==1|j==round+1)

    {

    DK[2][round-j+2]=(fuyi-Z[2][j])one;

    DK[3][round-j+2]=(fuyi-Z[3][j])one;

    }

    else

    {

    DK[2][round-j+2]=inv(Z[3][j]);

    DK[3][round-j+2]=inv(Z[2][j]);

    }

    }

    for(j=1;j=round+1;j++)

    {

    DK[5][round-j+2]=inv(Z[5][j]);

    DK[6][round-j+2]=inv(Z[6][j]);

    }

    

    }

uniapp如何加密解密rc4

uniapp如何加密解密rc4步骤:

1、第一步是生成S盒

2、初始排列S然后用T产生S的初始置换.从S到S255,对每个Si,根据由Ti确定的方案,将Si置换为S中的另一字节

3、产生密钥流矢量S一旦完成初始化,输人密钥就不再被使用。

4、最后进行异或运算data与key按位异或操作

c语言rc4加解密的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于rc4加密算法、c语言rc4加解密的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月30日 03:48:23
下一篇 2024年3月30日 03:54:40

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7200
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6300
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3400
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信