java凯撒加密socket,密钥短语密码加密,解密同理。

//密钥短语密码,密钥不能太长!!vc++6.0成功

#include

#include

#include

int str_len(char *str)

{

int len = 0;

while(*(str++))

len++;

return len;

}

int main(int argc, char *argv[])

{

char *str=NULL;

str=(char*)malloc(127);

printf("请输入密钥必须大写字母(得修正):");

gets(str);

int s = str_len(str);

int v=s;

//重复字母替换成#号

for(int i = 0;i

for(int j = i+1;j

{

if(str[i]==str[j])

{

str[j]='#';

}

}

// printf("%s\n",str);

char *p=str;

//将#号删除,像数据结构中的顺序表,覆盖前面的。

while(*p != '\0')

{

if(*p=='#')

{

while(*p != '\0')

{

*p=*(p+1);

p++;

}

p=str;//指针清零,这块想了好久一直BUG

}

else p++;

}

//处理最后一个字母是重复的情况

if(str[str_len(str)-1]=='#')

str[str_len(str)-1]=NULL;

//输出删除后的字符

//  printf("输出删除后的字符:");

//  printf("%s\n",str);

int e = str_len(str);

int f=e;

char a[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};

char b[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};

for(int o = 0;o<25;o++)

for(int j = 0;j

{

if(b[o]==str[j])

{

b[o]='#';

}

}

// printf("%s\n",str);

char *pp=b;

//将#号删除,像数据结构中的顺序表,覆盖前面的。

while(*pp != '\0')

{

if(*pp=='#')

{

while(*pp != '\0')

{

*pp=*(pp+1);

pp++;

}

pp=b;//指针清零,这块想了好久一直BUG

}

else pp++;

}

//处理最后一个字母是重复的情况

if(b[25]=='#')

b[25]=NULL;

// printf("%s\n",str);

//  printf("去除与str相同的字母");

//  printf("%s\n",b);

char *ss;

ss=(char*)malloc(27);

int t;

memset(ss,'0',26);

ss[26]=NULL;

for(i=0;i

{

ss[s] = str[i];

//  printf("i=...%d,s=...%d\n",i,s);

}

t=s;

// printf("t=%d",t);

// printf("把str放入ss中....:");

// printf("%s\n",ss);

for(i = 0;i<26-t;i++,s++)

{

ss[s] = b[i];

}

//printf("把b一部分放入ss中....:");

// printf("%s\n",ss);

// printf("i....=%d",i);

for(int j=0;j

{

ss[j]=b[i];

//  printf("B....%c,",b[j]);

// printf("SS...,,",ss[j]);

// printf("%s\n",ss);

}

//输出加密后的字母表

// printf("把b另一部分放入ss中....:");

// for(int w=0;w<26;w++)

// printf("%c",ss[w]);

// printf("\n");

//对输入的内容进行操作

char sstr[50];

printf("请输入正文(必须是小写字母待修正) :");

gets(sstr);

int len = str_len(sstr);

for( i = 0;i

for(int j=0;j<26;j++)

{

if(sstr[i]==a[j])

sstr[i]=ss[j];

else

sstr[i]=sstr[i];

}

printf("加密结果为:");

printf("%s\n",sstr);

return 0;

}

/*

昨天写的。写的不是很完善,希望提出改进意见。

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值