字符串加密程序设计 :假设原文为字符序列C(C0、C1、C2、…Cn-1),加密后所产生的密文S(S0、S1、S2、

ynwe0082022-10-04 11:39:541条回答

字符串加密程序设计 :假设原文为字符序列C(C0、C1、C2、…Cn-1),加密后所产生的密文S(S0、S1、S2、
加密规则为:把S0、S1、S2、…Sn-1围成一个圈(如图):
从S0起沿顺时针记数,当数到第key个字符时,将C0放在该位置上,然后从S环中去掉该字符,再从下一个位置起数key个位置,再把C1放入,然后再从S环中去掉该字符,如此反复,直至放完.
如 key=3
原文为:abcd
密文为:dbac

已提交,审核后显示!提交回复

共1条回复
好人200 共回答了10个问题 | 采纳率100%
不知道我理解的对不对,起始点s0,终止点s0,你可以试试
#include "stdio.h"
#define N 100
void main()
{
char *c=(char*)malloc(N*sizeof(char));
char *s=(char*)malloc(N*sizeof(char));
char *p=(char*)malloc(N*sizeof(char));
int i;
int key;
int len;
int temp;
printf("Please input encryption text:n");
gets(c);
printf("Please input encryption key words:n");
scanf("%d",&key);
len=strlen(c);
for(i=0;i
1年前

相关推荐

字符串加密现要对一个由大写字母组成的字符串进行加密,有两种加密方法(1)替换法:把一个字母替换成它之后的第k个字母,比如
字符串加密
现要对一个由大写字母组成的字符串进行加密,有两种加密方法
(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年前1
baggio2117 共回答了11个问题 | 采纳率72.7%
#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 = %sn", str);
disorder(str, key);
printf("str = %sn", str);
}