(姓字母向后移两位,名字母向后移三位)
#include<stdioh>
#include<stringh>
int main(){
char src[30],result[]="",ch[2]={'\0'};
int i,j,len;
fgets(src,30,stdin);
len=strlen(src);
for(i=0;src[i]!=' ';i++){
if('a'<=src[i] && src[i]<='z'){
ch[0]=(char)(((src[i]-'a')+2)%26+'a');
strcat(result,ch);
}else if('A'<=src[i] && src[i]<='Z'){
ch[0]=(char)(((src[i]-'A')+2)%26+'A');
strcat(result,ch);
}else{
ch[0]=src[i];
strcat(result,ch);
}
}
for(j=i;j<len;j++){
if('a'<=src[j] && src[j]<='z'){
ch[0]=(char)(((src[j]-'a')+3)%26+'a');
strcat(result,ch);
}else if('A'<=src[j] && src[j]<='Z'){
ch[0]=(char)(((src[j]-'A')+3)%26+'A');
strcat(result,ch);
}else{
ch[0]=src[j];
strcat(result,ch);
}
}
printf("%s\n",result);
return 0;
}
C语言异或加密实现的原理为,将任意值,与相同值两次异或后,结果与原值相同。所以可以通过将源数据与一个固定的值(秘钥key)异或后,得到密文,然后将密文再次与秘钥异或,得到原文。这样就实现了异或加密及解密。
C语言中的异或是一种按位 *** 作的计算,其计算原理为, *** 作数对应位上的值相同,则结果位上值为0,否则为1异或的运算符号为^,于是真值表如下:
0^0=0
0^1=1
1^0=1
1^1=0
这样区分源数据和秘钥值,有如下四种可能:
0^0=0 0^0=0
0^1=1 1^1=0
1^0=1 1^0=1
1^1=0 0^1=1
以上是将一个值,用另一个值连续异或两次后的计算过程,可以看到,最终的值与原始值是相同的。这就是异或加密的基础原理。
以上就是关于c语言字母加密全部的内容,包括:c语言字母加密、C语言 异或加密、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)