密码学实验报告总结

  • 格式:doc
  • 大小:467.50 KB
  • 文档页数:38

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码学实验报告(本文档为Word版本,下载后可自由编辑)

项目名称:×××××××××

项目负责人:×××

联系电话:×××××

编制日期:×××××

密码学实验报告

实验目的:掌握Caesar密码加密解密原理,并利用VC++编程实现。

实验内容:Caesar密码的加密原理是对明文加上一个密钥(偏移值)而得到密文。假设密钥为3,那么字母“a”对应的ASCII码为97,加上3得100正好是字母“d”的ASCII码值,

实验说明:加密实现的两种方式,只限定英文字母(区分大小写),加密时,根据明文字符是小(大)写字母,采用加密运算:

密文字符=“a”或“A”+(明文字符-“a”或“A”+password%26+26)%26

如果输入其他字符,则直接原样输出,不作处理

可以是任意字符

加密时,我们不做任何区分,直接利用Caesar密码算法

密文字符=明文字符+password 解密反之。

实验结果:

void CCaesarDlg::OnButton1() //加密按钮

{

UpdateData(TRUE); //从界面上的输入的值传入成员变量

m_crypt=m_plaintxt; //密文进行初始化,它与明文的长度是相同的

for(int i=0;i

{

if(m_plaintxt.GetAt(i)>=48&&m_plaintxt.GetAt(i)<=57) //如果输入的字符是数字

{

m_crypt.SetAt(i,'0'+(m_plaintxt.GetAt(i)-'0'+m_password%10 +10)%10);

'0'+(m_plaintxt.GetAt(i)-'0'+m_password%10 +10)%10)计算的结果

UpdateData(FALSE); //成员变量的值计算好之后传给界面}

else

if(m_plaintxt.GetAt(i)>=65&&m_plaintxt.GetAt(i)<=90) //如果输入的是大写字符

{

m_crypt.SetAt(i,'A'+(m_plaintxt.GetAt(i)-'A'+m_password % 26+26)%26); //输出密文

UpdateData(FALSE); //成员变量更新后的值传给界面

}

else

if(m_plaintxt.GetAt(i)<=122&&m_plaintxt.GetAt(i)>=97) //如果输入的字符是小写字母

{

m_crypt.SetAt(i,'a'+(m_plaintxt.GetAt(i)-'a'+m_password%26+26)%26);//密文输出UpdateData(FALSE);

}

else

{

m_crypt.SetAt(i,m_plaintxt.GetAt(i)); //其他的字符按照原样输出

UpdateData(FALSE);

}

}

void CCaesarDlg::OnButton2() //解密按钮

{

UpdateData(TRUE);

m_decrypt=m_crypt; //明文解进行初始化,等于密文的长度

for(int i=0;i

{

if(m_plaintxt.GetAt(i)>=48&&m_plaintxt.GetAt(i)<=57) //如果输入的是数字

{

m_decrypt.SetAt(i,'0'+(m_crypt.GetAt(i)-'0'-m_password%10 +10)%10); //输出明文解setat(i)一个一个将解密的结果输入到明文解中

UpdateData(FALSE);

}

else

if(m_plaintxt.GetAt(i)>=65&&m_plaintxt.GetAt(i)<=90)

{

m_decrypt.SetAt(i,'A'+(m_crypt.GetAt(i)-'A'-m_password % 26+26)%26);

UpdateData(FALSE);

}