/*本问题的关键是如何交换ASCII的二进制位,下面提供简短算法,并附上VC++6.0环境下的运行结果截图。
*/
#include<stdio.h>
charswapbit(charc){
chari,num=0,ch[8];
for(i=0;i<8;i++){
ch[i]=c&1;
c=(c>>1);
}
for(i=0;i<8;i++){
num=2*num+ch[i];
}
returnnum;
}
intmain(){
charch;
for(ch='A';ch<='Z';ch++){
printf("%c=%X:%X ",ch,ch,0XFF&swapbit(ch));
}
return0;
}
② C语言对称及可逆加密算法,急!!!
#include<stdio.h>
#include<string.h>
voidEncode(chars[],charkey[]){
inti,j,k,t,ch;
chartmp[9];
intlen=strlen(key);
for(i=0,j=0;s[i];++i){
t=key[j];
for(k=0;k<8;++k){
tmp[k]=(s[i]&1)^(t&1);
s[i]>>=1;
t>>=1;
}
ch=0;
for(k=7;k>=0;--k)
ch=2*ch+tmp[k];
s[i]=ch;
j=(j+1)%len;
}
}
intmain(){
chars[]="AbcdXYZ2014";
charkey[]="GodKnow";
printf("明文:%s ",s);
Encode(s,key);
printf("密文: %s ",s);
Encode(s,key);
printf("明文:%s ",s);
return0;
}
③ 对称加密算法有哪些
对称加密算法是应用较早的加密算法,技术成熟。
主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
④ 密码学基础(二):对称加密
加密和解密使用相同的秘钥称为对称加密。
DES:已经淘汰
3DES:相对于DES有所加强,但是仍然存在较大风险
AES:全新的对称加密算法。
特点决定使用场景,对称加密拥有如下特点:
速度快,可用于频率很高的加密场景。
使用同一个秘钥进行加密和解密。
可选按照128、192、256位为一组的加密方式,加密后的输出值为所选分组位数的倍数。密钥的长度不同,推荐加密轮数也不同,加密强度也更强。
例如:
AES加密结果的长度由原字符串长度决定:一个字符为1byte=4bit,一个字符串为n+1byte,因为最后一位为'