标题:求个列换位法的加密算法
只看楼主
a18753216575
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-17
结帖率:0
 问题点数:0 回复次数:8 
求个列换位法的加密算法
如题用c语言编一个列换位法加密解密程序,下面这个程序额错在哪里,怎么改
#include<stdio.h> #include<string.h> #include<time.h> #define CODELEN 256  /*密文长度.*/  char *encode(char *dest,char *str,int key) {  int i,j,len,len2,n=0; len=strlen(str);  if((len % key)!=0) len2=len+ key-(len % key); else len2=len; srand(time(NULL)); for(i=len;i<len2;i++) str[i]=(char)((srand() % 26) + (srand() % 1)*('A'-'a')+'a'); str[len2]=0; for(j=0;j<key;j++) for(i=0;i<len2/key;i++) dest[n++]=str[i*key+j]; dest[n]=0; str[len]=0; return dest; }  char *decode(char *dest,char *str,int key) { int i,j,len,n=0; len=strlen(str); if((len % key)!=0) return NULL; len=len / key; for(i=0;i<len;i++) for(j=0;j<key;j++) {   dest[n++]=str[j*len+i];  //printf("%c",dest[n-1]); } dest[n]=0;  return dest; }  int main() { int key,i,j,len; char str[CODELEN]; char xstr[CODELEN]; scanf("%s",str); scanf("%d",&key);//输入密钥  printf("原始明文:%s\n",str); printf("加密密文:");  encode(xstr,str,key); printf("%s\n",xstr);   if(decode(str,xstr,key)!=NULL) {printf("%s\n",str);} else {printf("NULL");} }
搜索更多相关主题的帖子: 加密 include encode 
2012-12-17 23:33
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
我去,这一大块的

小小战士,战士中的战斗机!
2012-12-17 23:38
a18753216575
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-17
得分:0 
回复 2楼 小小战士
帮忙找下错误吧,好像是srand 没有声明,该咋改啊
2012-12-17 23:42
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
你把程序分行写,这谁能看得懂?

小小战士,战士中的战斗机!
2012-12-18 01:43
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
得分:0 
这代码好帅
2012-12-18 07:31
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
得分:0 
坐等豆腐切条
2012-12-18 07:59
a18753216575
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-17
得分:0 
回复 4楼 小小战士
#include<string.h>
#include<time.h>
#define CODELEN 256  /*密文长度.*/
char *encode(char *dest,char *str,int key)
{  int i,j,len,len2,n=0; len=strlen(str);  
if((len % key)!=0) len2=len+ key-(len % key);
else len2=len; srand(time(NULL));
for(i=len;i<len2;i++)
str[i]=(char)((srand() % 26) + (srand() % 1)*('A'-'a')+'a');
str[len2]=0;
for(j=0;j<key;j++)
for(i=0;i<len2/key;i++) dest[n++]=str[i*key+j];
dest[n]=0; str[len]=0; return dest; }  
char *decode(char *dest,char *str,int key)
{ int i,j,len,n=0;
len=strlen(str);
if((len % key)!=0)
return NULL;
len=len / key;
for(i=0;i<len;i++)
for(j=0;j<key;j++)
{   dest[n++]=str[j*len+i];  //printf("%c",dest[n-1]); }
dest[n]=0;  return dest; }
int main()
{ int key,i,j,len; char str[CODELEN]; char xstr[CODELEN];
scanf("%s",str);
scanf("%d",&key);//输入密钥
printf("原始明文:%s\n",str);
printf("加密密文:");
encode(xstr,str,key); printf("%s\n",xstr);  
if(decode(str,xstr,key)!=NULL)
{printf("%s\n",str);}
else {printf("NULL");}
}
这样行了吧
2012-12-18 09:32
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
一点缩进都没有  看着好像看密码一样 真的

DO IT YOURSELF !
2012-12-18 10:33
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
得分:0 
2012-12-18 18:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391731-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.521922 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved