| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1044 人关注过本帖
标题:[求助]C#加密解密
只看楼主 加入收藏
jidey
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-5-10
收藏
 问题点数:0 回复次数:2 
[求助]C#加密解密
1988年的试题加强版 = =b

循环数据加密程序对明文(原文)进行加密并形成密码文。其加密算法如下:
假定原文为C1,C2,C3...Cn,加密后生成的密文为S1,S2,S3 ... Sn。首先读入整正数Key(Key>1)作为加密密钥,并将预留的n个密文字符位置按顺时针方向连成一个环。加密时从S1位置起顺时针计数,当数到第Key个字符位置时,将原文中的字符C1(包括空格及其它字符)放入该密文字符位置中,同时从环中除去(以后就跳过)该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第Key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置;依次类推,直至n个原文字符全部放入密文环中。由此产生的S1S2S3...Sn即为原文的密文。
例如, 当 Key=3 时,
原文:THIS IS AN ENCODING SYSTEM 的密文为:
AOTGNHEDI YS E IMINTSNC SS
当 Key=4 时,该原文的密文为:
SSETYD HTNGIASISCNM E ION
双循环数据加密程序则在上述循环数据加密程序的基础上还对加密密钥Key进行循环计数,计数步长可大与1。
然后,设计相应的解密程序将密文译成原文。

typedef struct node
{
char ch;
struct node *forward; /*链接下一节点*/
struct node *backward; /*链接前一节点*/
} CODE;

char *decode(char *ocode, int key)
{
char *ncode;
int length, count,i;
CODE *loop , *p;
length = strlen(ocode);
loop= (CODE*)malloc(length*sizeof(CODE)); /*动态分配密文环*/
for(i=0;i<length-1;i++)
{
loop[i].forward = &loop[i+1];
loop[i].backward =&loop[i-1];

}
loop[0].backward =&loop[length-1];
loop[0].forward = &loop[1];
loop[length-1].forward = loop;
loop[length-1].backward = &loop[length-2];

for(p=loop, i=0; i<length;i++)
{
/*产生密文链表*/
for(count=1;count<key; count++)
p= p->forward;
p->ch =*ocode++;
p->backward->forward =p->forward;
p->forward->backward = p->backward;
p = p->forward;
}
ncode = (char*)malloc((length+1)*sizeof(char));
for(i=0;i<length;i++)

ncode[i] =loop[i].ch;
ncode[length] = '\0';
return ncode;
}

main()
{
char ocode[256];
int key, num=0;
printf("输入加密电文: ");
while(num<255&&(ocode[num++]=getchar())!='\n');
ocode[(num==255)?num:num-1] ='\0';
do
{
printf("输入加密密钥:");
scanf("%d",&key);

} while(key<=1);
printf("电文的密码是: '%s'\n",decode(ocode,key));

}

原代码(上面的红色部分)环境用的是C,是用了指针和循环双链表来做的,但指针在C#里是不安全代码段,而且觉得指针很麻烦,有没有办法不使用指针来达到这种加密的效果呢?麻烦各位帮帮忙,提个思路也好,谢谢~~
搜索更多相关主题的帖子: 解密 
2007-05-10 07:50
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
数组?

飘过~~
2007-05-10 10:30
jidey
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-5-10
收藏
得分:0 
输入和返回的都是字符串...
2007-05-10 14:37
快速回复:[求助]C#加密解密
数据加载中...
 
   



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

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