论坛: 编程破解 标题: [求助]加密解密 复制本贴地址    
作者: seawman [yht1987]    论坛用户   登录
我刚学C,不太会,请教各位。
我今天写了这样一段程序:
#include <stdio.h>
#include <ctype.h>
main()
{
char c;
c=getchar();
while(c!='\n')
 {
 if(isalpha(c))
  if(isupper(c)) c=(c-'A'+4)%26+'A';
  else c=(c-'a'+4)%26+'a';
 else c=(c-'0'+4)%10+'0';
 putchar(c);
 c=getchar();
 }
printf("\n");
}
作用是把A转换成E,B转换成F,Z转换成D等。
如把administrator可以转换成ehqmrmwxvexsv。
写完后我又想转换完了得把它再转换成原文呀,可我就是想不出来一个好的算法,没办法就写了下面一段程序凑合:
#include <stdio.h>
main()
{
char c;
c=getchar();
while(c!='\n')
 {
 if(c<=68&&c>=65) c=c+22;
 else if(c<=90&&c>=69) c=c-4;
 else if(c<=100&&c>=97) c=c+22;
 else if(c<=122&&c>=98) c=c-4;
 else if(c<=51&&c>=48) c=c+6;
 else c=c-4;
 putchar(c);
 c=getchar();
 }
printf("\n");
}
我写完后怎么就觉得太罗嗦,而且有范围,不好。
但苦于不想不出好的算法,所以就来请教大家。
还有个问题就是怎么可以把空格和这些符号~!@#$%^&*()_+|}{:">?<按规律加密再解密。
请教了!


[此贴被 seawman(yht1987) 在 05月03日13时18分 编辑过]

地主 发表时间: 05/03 13:04

回复: ricky [ricky]   版主   登录
标准的加密解密方法是这样的:
char *key = "asdjkl ......
你要加密时就:
char a = key[asc(ch)-' '];
解密也一样,不要用循环,多开一个数组,效率也好,也不用为了密钥犯愁了

B1层 发表时间: 05/04 22:06

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号