|
![]() | 作者: 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号