房产证信息数字签名的实现+RSA公钥+SHA哈希算法(4)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

房产证信息数字签名的实现+RSA公钥+SHA哈希算法(4)


void GensigDlg::OnGensig()
{
if(m_strPK.IsEmpty()){MessageBox(“请导入私钥”,NULL,MB_ICONERROR|MB_OK);return;}
if (m_strF.IsEmpty)
{MessageBox(“请选择要签名的文件”,NULL,MB_ICONERROR|MB_OK);return;}
int i;
SHA1_CTX context;
unsigned char digest[20],buffer[16384];
FILE*file;
if(!(file=fopen(LPCTSTR(m_strF),”rb”)))
{MessageBox(“无法打开文件”);return;}
SHA1Final(digest,&context);
fclose(file); dig.Mov(0);
for(int j=0;j<5;j++){memcpy(&dig.m_ulValue[j],&digest[j*4],4);}
dig.m_Length=5;
CRsa enc;
Sig.Mov(enc.encrypt*(dig,n,pk));sig.Put(m_strS);
UpdateData(FALSE);
}
签名的流程如图3
图3  签名流程
签名的实现:
(1)房产证持有者在房产证处理模块中输入相关的证件信息,生成一个与之对应的房产证数字公文文件。
(2)将生成的数字公文文件用安全哈希算法进行消息摘要处理,得到房产证文件的消息摘要文件。
(3)对经过哈希算法产生的数字摘要文件用密钥生成模块产生的用户的私钥进行加密,也就是对摘要进行签名。因为用户私钥是房产证持有者自己保密的,所以能保证签名的真实性和唯一性。
3.3.3 签名验证模块
签名验证模块是对用户的数字证书的真伪性进行鉴别的。在对用户证书进行验证时,需要用户的签名后文件和数字证书的原文。用密钥管理模块生成的公钥来解密用户的签名文件,得到一个消息摘要,解密的方法为:收到签名文件 后,计算 进行解密,其中 为公开公钥;再用哈希算法对数字证书进行摘要处理得到一个消息摘要;通过对比这两个消息摘要是否一致来判定这个有用户数字签名的数字房产证书是不是鉴别人的。签名验证的过程通过一段代码来实现其功能:
Void CersigDlg::OnCers()
{
if(m_strUK.IsEmpty()){  MessageBox(“请导入公钥”,NULL,MB_ICONERROR|MB_OK); return;}
if(m_strF.IsEmpty()){ MessageBox(“请选择签名文件”,NULL,MB_ICONERROR|MB_OK);  return;}
if(m_strS.IsEmpty()){  MessageBox(“请导入签名”,NULL,MB_ICONERROR|MB_OK); return;}
 int i;
SHA1_CTX context;
unsigned char digest[20],buffer[16384];
FILE*file;
if(!(file=fopen(LPCTSTR(m_strF),”rb”))){MessageBox(“文件无法打开”); return;}
SHA1Init(&context);
while(!feof(file)){i=fread(buffer,1,16384,file); SHA1Update(&context,buffer,i);}
SHA1Final(digest,&context);
fclose(file); dig.Mov(0);
for(int j=0;j<5;j++){memcpy(&dig.m_ulValue[j],&digest[j*4],4);}
dig.m_nLength=5;
CRsa cer;
if(dig.Cmp(cer.decrypt(sig,n,uk))==0)
  { MessageBox(“签名合法”,NULL,MB_ICONINFORMATION|MB_OK);}
else MessageBox(“签名不合法”,NULL,MB_ICONERROR|MB_OK);
}
签名验证流程如图4
图4  签名验证
签名验证过程:
(1)房产证持有者提供证件信息,在房产证处理模块中输入相关的证件信息,生成一个与之对应的房产证数字公文文件。
(2)将生成的数字公文文件用安全哈希算法进行消息摘要处理,得到房产证文件的消息摘要文件。
(3)将要验证的数字签名证书用密钥管理模块生成的公钥进行解密,得到一个消息摘要文件。
(4)将两次得到的消息摘要文件通过比较运算来判断两次消息摘要是否一致,若一致则说明证书为真,若不一致则证书为假。
总结
通过对这个房产证信息数字签名的分析设计,我学到了很多的知识。对密码技术,公钥密码体制和数字签名都有了新的认识。并且对数字签名的概念和RSA数字签名的实现都有了初步了解。但是理解不是很深,还需要不断地学习才能更加熟练地运用。通过介绍传统的证件在信息保密和防伪方面的弊端,来引出用新的信息安全技术与传统的证件防伪技术相结合这种方案,来保证证书的安全性和真实性。 (责任编辑:qin)