本篇文章给大家谈谈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代替目前的算法。我再重复一遍:只是可能。呵呵,希望能帮到你!谢谢望采纳哦!
易语言解密文件(用了一晚上写的加密,解密不出来了)哪位高手给写下解密!用的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加解密的信息别忘了在本站进行查找喔。