标准 大 超大巨大
字符串加密

用户头像drdrdr5656

2013-09-03

现要对一个由大写字母组成的字符串进行加密,有两种加密方法 (1)替换法:把一个字母替换成它之后的第k个字母,比如AXZ,k取2,加密后得到CZB(Z之后第二个字符为B) (2)置换法:改变原来字符串中字母的顺序,比如将顺序<2 3 1>应用到ABC上得到的密文为BCA。(顺序<2 3 1>指将原字符串的第2个字符作为新字符串的第1个字符,将原字符串的第3个字符作为新字符串的第2个字符,以此类推) 这两种方法单独使用都很容易被人破解,所以我们将两种方法联合使用,对一个字符串进行两次加密,比如AXZ在k=2和顺序<2 3 1>下加密得到ZBC。

满意答案

s13419462
LV13
2013-09-04
#include <stdio.h> #include <stdlib.h> void replace(char *src, int n) 能济离法卷乡{ char *s = src; n = n % 26; wh免类广规呢革许类委场心ile(*s != 0) { *s = *s + n; if(*s > 'Z') *s -= 26; s++; } } void disorder(char *s, char *key) { int len = 0 , i = 0; char *tmp; while(s[len++] != 0); tmp = (char*声斗胜素)malloc(sizeof(char) * (len)); while(i < len) tmp[i] = s[i++]; for(i = 0; i < len - 1; i++) { s[i] = tmp[key[i] - '0' - 1]; } free(tmp); } void main() { int n; char str[100], key[100]; printf("input <str 来自n order >: "); /360问答/请合法输入eg. AXZ 2 231 scanf("%s%d%s", s适些激美航tr, &n, key); replace(st叫太既击r, n); printf("str = %s\n", s抓率体婷统非序失胡倒关tr); disorder(str, key); printf("str = %s\n", str); }
00

您可能感兴趣的内容

相关问题

查看更多相关问题