密码学实验报告总结
- 格式:doc
- 大小:467.50 KB
- 文档页数:38
密码学实验报告(本文档为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); }