文本串加密 顾云康 E01114300文档格式.docx
- 文档编号:18824028
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:15
- 大小:332.75KB
文本串加密 顾云康 E01114300文档格式.docx
《文本串加密 顾云康 E01114300文档格式.docx》由会员分享,可在线阅读,更多相关《文本串加密 顾云康 E01114300文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
其特殊性在于限定插入和删除数据元素只能在线性表的一端进行。
进行插入和删除的一端是浮动端,通常被称为栈顶,并用一个栈顶指针指示;
而另一端是固定端,通常被称为栈底。
(2)通过栈的特殊性,实现进制的转换
(3)通过对储存在计算机的数据的ASCII码值进行特定的数值转换,
从而实现数据的加密
(4)对加密后的密文按照特定的密钥进行进制转换,转换成明文
3.详细设计
a.进栈
voidpush(seqstack*s,intx)
{
if(s->
top==1000-1)
{
printf("
栈满"
);
}
else
s->
top++;
data[s->
top]=x;
b.出栈
intpop(seqstack*s)
if(empty(s))
栈空"
top--;
return(s->
top+1]);
c.输入明文
voidWORD(seqstack*s)
inti;
printf("
亲,请输入明文\n"
getchar();
for(i=0;
i<
s->
b;
i++)
scanf("
%c"
&
word[i]);
ASCII[i]=s->
word[i];
//将输入的字符型强制转换为ASCII码
d.输入密钥
voidpassword(seqstack*s)
inti,a=0;
6;
%d"
password[i]);
if(s->
password[i]==0||s->
password[i]==1)
{
s->
password[i]=9;
}
a+=s->
password[i];
s->
PASSWORD=a/6;
//求密钥的平均值,并取整
e.进制转换(十进制转为其他进制)
voidnumber_change(seqstack*s)
intn,i;
setnull(s);
n=s->
n;
i=s->
PASSWORD;
while(n)
push(s,n%i);
n=n/i;
while(!
empty(s))
pop(s));
"
f.加密(将明文的ASCII转换为密文)
voiddeciphering(seqstack*s)
inti,a,num,b;
a=s->
c[i];
num=0;
b=1;
while(a)
num+=(a%10)*b;
a/=10;
b*=s->
d[i]=num;
s->
d[i]);
\n"
g.解密(将密文转换为明文)
//将密文看成n进制,转换为十进制(n为处理后的密钥)
}
4.调试分析
5.程序清单
#include<
stdio.h>
#include"
math.h"
typedefstruct
intdata[1000];
inttop;
intn;
inta;
intb;
chard[1000];
intc[1000];
intpassword[6];
intPASSWORD;
charword[1000];
intASCII[1000];
intciphertext[1000];
}seqstack;
seqstack*s;
voidsetnull(seqstack*s)
top=-1;
intempty(seqstack*s)
top==-1)
return1;
return0;
intpop(seqstack*s)
inttop(seqstack*s)
ciphertext[s->
top]=s->
top];
return(s->
top]);
voidencryption(seqstack*s)
{inta;
亲,努力加密中哦\n"
for(a=0;
a<
a++)
n=s->
ASCII[a];
number_change(s);
亲,加密完成,输出密文\n"
voidSCANF(seqstack*s)
c[i]);
voidmain()
seqstacks;
********************************************************************************\n\n"
\t\t\t欢迎使用康康加密\n\n\n"
while
(1)
1.请输入需要加(解)密的文件大小\n2.请输入需要加密的明文\n3.请输入6位密钥\n4.加密,生成密文\n5.请输入需要解密的密文\n6.解密,生成明文\n"
i);
switch(i)
case1:
scanf("
s.b);
break;
case2:
WORD(&
s);
case3:
password(&
case4:
encryption(&
break;
case5:
SCANF(&
case6:
deciphering(&
6.参考文献
(1)严蔚敏,吴伟民,数据结构,第二版.清华大学出版社,1992
(2)徐德民.最新C语言程序设计,电子工业出版社,
1992
7.总结:
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。
它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出ASCII码标准的单字节字符编码方案,用于基于文本的数据。
ASCII码标准的单字节字符编码方案,用于基于文本的数据。
ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。
标准ASCII码使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
通过对文本的ASCII码按照一定的规则(通过密钥来指定)进行数值转换,转换为密文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本串加密 顾云康 E01114300 文本 加密