3 房产证公文数字签名系统总体设计 3.1系统功能图 copyright paper51.com
房产证公文数字签名系统总共分为两大功能模块:房产证公文处理模块和信息安全处理模块,而信息安全处理模块主要由密钥管理模块,数字签名生成模块和签名验证模块构成,(如图4所示) 内容来自www.paper51.com copyright paper51.com 图 4 系统功能图 http://www.paper51.com 下面分别介绍各个模块的功能 http://www.paper51.com
3.2 房产证公文处理模块 copyright paper51.com 在不同的房产证中相应的证件的输入信息不相同,公文处理模块采用证件输入界面,将信息存储为一种统一的数据格式公文文件就可以进行相同的安全处理,在验证时在将统一格式的数据公文进行信息还原就可以实现。因此系统可以方便的进行信息输入,其证件信息输入界面如图5所示。 http://www.paper51.com
内容来自论文无忧网 www.paper51.com 图5 房产证信息输入界面 http://www.paper51.com
在公文处理模块中,监管中心需要把用户房屋产权者的相关内容输入这个数字文件中; 内容来自www.paper51.com
例如 : 内容来自论文无忧网 www.paper51.com
证书持有人姓名; 张XXX paper51.com
房屋产证编号; 0000354 http://www.paper51.com
房屋的类型; 商品房 copyright paper51.com 房屋使用年限; 50年 copyright paper51.com
房屋所在地址; XXX路XX街XXXX号 copyright paper51.com 开发商名称; XXX房地产开发公司 http://www.paper51.com 物管单位; XXX物业管理公司 http://www.paper51.com 户主联系电话 02883961853 http://www.paper51.com 私密问题; XXXXXX 内容来自论文无忧网 www.paper51.com
问题答案; XXXXXXX paper51.com 当用户把这些都输入到相应的对话框中通过保存按钮就可以把这个证件保存在一个相应的文件中。这个只是房产证件原件对应的数字公文文件。 http://www.paper51.com 为了真正能对户主的利益安全考虑,在本设计中还加入了一个户主的秘密问题,以及秘密问题的答案这两项。通过这两项再结合数字签名就更能更好的辨别这个证件的真伪了,假如户主提问;我高中最喜欢的一个老师是某某某? 内容来自论文无忧网 www.paper51.com 户主自己回答的答案是ABC,如果遇到有人想假冒户主并私自使用户主的房产证的时候,在鉴别房产证的真伪的时候。他如果在秘密问题这个选项提问和原来的不一样或者回答的答案不一样在经过相同的方法处理后就和户主本身持都的房产证公文文件有很大的差别,由此断定这个数字证书是假冒的。 copyright paper51.com 对输入信息的保存实现代码 内容来自www.paper51.com
voidGenfczDlg::OnSave() copyright paper51.com { 内容来自论文无忧网 www.paper51.com UpdateData(); 内容来自www.paper51.com CFileDialog save_uk_dlg(FALSE,"uk",NULL,OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT,"Public fcz files (*.txt)|*.txt"); 内容来自论文无忧网 www.paper51.com if(save_uk_dlg.DoModal()==IDOK){ copyright paper51.com CStringfile_path=save_uk_dlg.GetPathName(); http://www.paper51.com CFilefuk(file_path,CFile::modeCreate|CFile::modeWrite); paper51.com char endline[1]={';'}; http://www.paper51.com fuk.Write((LPCTSTR)m_name,m_num.GetLength()); copyright paper51.com fuk.Write(endline,1); paper51.com fuk.Write((LPCTSTR)m_num,m_num.GetLength()); copyright paper51.com fuk.Write(endline,1); 内容来自www.paper51.com fuk.Write((LPCTSTR)m_addr,m_addr.GetLength()); 内容来自www.paper51.com fuk.Write(endline,1); copyright paper51.com fuk.Write((LPCTSTR)m_type,m_type.GetLength()); paper51.com fuk.Write(endline,1); paper51.com fuk.Write((LPCTSTR)m_year,m_year.GetLength()); copyright paper51.com fuk.Write(endline,1); 内容来自论文无忧网 www.paper51.com fuk.Write((LPCTSTR)m_phone,m_phone.GetLength()); 内容来自www.paper51.com fuk.Write(endline,1); 内容来自www.paper51.com fuk.Write((LPCTSTR)m_phone,m_simi.GetLength()); paper51.com fuk.Write(endline,1); 内容来自www.paper51.com
fuk.Write((LPCTSTR)m_phone,m_daan.GetLength()); 内容来自论文无忧网 www.paper51.com fuk.Write(endline,1); http://www.paper51.com fuk.Close(); copyright paper51.com } 内容来自论文无忧网 www.paper51.com UpdateData(FALSE); http://www.paper51.com } 内容来自www.paper51.com
3.3 信息安全处理模块 copyright paper51.com
3.3.1 RSA 密钥管理模块 内容来自www.paper51.com 在这个密钥生成模块中,该模块通过程序中的相关加密算法来随机生成发放给用户的私钥和房产管理中心留存和私钥成对的公钥文件,管理中心可以通过这个模块的生成密钥按钮,让计算机自动生存公钥和私钥,生成相应的密钥以后公钥由管理中心统一管理,私钥文件会发放给相应的户主。以便户主在下一个模块中通过自己的私钥来对自己的数字房产证进行相应的签名,达到不可抵赖的作用通过对房密钥生成模块的测试,通过该子系统中RSA加密算法能够得出签名需要用到的签名私钥和管理中心用来验证签名后的证件的真伪的公钥。 copyright paper51.com
copyright paper51.com 图6 密钥管理模块图 paper51.com RSA密码系统的安全性依赖于大数分解的难度,一般建议用户选择的素数p和q至少为100位,则n=pq是至少为200位的十进制数。因此实现RSA算法有必要定义大数的数据结构如图6所示。 内容来自www.paper51.com 密钥生成,加密和解密涉及到一些大数的基本运算。定义大数的基本运算库,包括加、减、乘、除、取模运算等,其中最重要的模乘运算和模幂运算。 内容来自论文无忧网 www.paper51.com 模幂算法是加密解密的核心算法。计算模幂的一种有效算法是“平方-乘”方法,通过对指数的二进制化来实现。大数数据的加,减,乘,除,模,模幂等由CBigInt这个类来完成,其定义如下: copyright paper51.com 1.CBigInt类的定义 copyright paper51.com class CBigInt 内容来自www.paper51.com { 内容来自论文无忧网 www.paper51.com
public: //大数在0x100000000进制下的长度 paper51.com unsigned m_nLength; //用数组记录大数在0x100000000进制下每一位的值 内容来自论文无忧网 www.paper51.com unsigned longm_ulValue[BI_MAXLEN]; 内容来自论文无忧网 www.paper51.com CBigInt(); http://www.paper51.com ~CBigInt(); http://www.paper51.com
/***************************************************************** paper51.com |