早教吧作业答案频道 -->其他-->
字符串加密现要对一个由大写字母组成的字符串进行加密,有两种加密方法(1)替换法:把一个字母替换成它之后的第k个字母,比如AXZ,k取2,加密后得到CZB(Z之后第二个字符为B)(2)置换法:改
题目详情
字符串加密
现要对一个由大写字母组成的字符串进行加密,有两种加密方法
(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。
现要对一个由大写字母组成的字符串进行加密,有两种加密方法
(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。
▼优质解答
答案和解析
#include
#include
void replace(char *src, int n)
{
char *s = src;
n = n % 26;
while(*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: ");
//请合法输入eg. AXZ 2 231
scanf("%s%d%s", str, &n, key);
replace(str, n);
printf("str = %s\n", str);
disorder(str, key);
printf("str = %s\n", str);
}
#include
void replace(char *src, int n)
{
char *s = src;
n = n % 26;
while(*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
//请合法输入eg. AXZ 2 231
scanf("%s%d%s", str, &n, key);
replace(str, n);
printf("str = %s\n", str);
disorder(str, key);
printf("str = %s\n", str);
}
看了字符串加密现要对一个由大写字母...的网友还看了以下:
某学校组织七年级分成两个小组参加社会实践活动,第一组x人,第二小组比笫一小组人数的2分一少30人. 2020-06-10 …
二一班共有23本书,需分给三个小组,其中第2组比第3组多2本,第1组比第2组多1本,请问各小组能分 2020-06-14 …
凑24点..迅速地!要求用以下几个数..用+-×÷凑出24..每个数用一次..(顺序可以打乱)第一 2020-06-20 …
1.第1组:1第2组:2,3第3组:4,5,6第4组:7,8,9,10.......2010年是第 2020-07-13 …
1.学校有两个电脑小组,第一小组的人数是第二小组的2倍,如果从第一小组调8人到第二小组,那么两组人 2020-07-15 …
有两小组,第2组人数是第1组的3/5.第1组有14人到第2组,第1组人数是第2组的1/2.原来每组 2020-07-16 …
(1/2)同学们进行手工制作比赛.第一小组做了138朵纸花,第一组做的朵数比第二组的2倍少42朵. 2020-07-18 …
第1个数字是1第2个数字是5第3个数字()第4个数字()第1个数字+第2个数字=个位为6第2个数字+ 2020-11-20 …
同学们进行手工制作比赛.第一组做了138朵纸花,第一组做的朵数比第二组的2倍少42朵.第一组做的朵数 2020-12-02 …
跪求一个极难的概率算法.求一个急难的算法,现有(0-9A-Z)个字符,组成17位的密码,地球上有68 2020-12-19 …