计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

免费房产证信息数字签名的实现(一)毕业(5)

2013-06-29 01:28
导读:;fuk.Write(endline,1); fuk.Write((LPCTSTR)m_type,m_type.GetLength()); fuk.Write(endline,1); fuk.Write((LPCTSTR)m_year,m_year.GetLength()); fuk.Write(endline,1); fuk.Write((LPCTSTR)m_phone,m_phone.GetL
;  fuk.Write(endline,1);
   fuk.Write((LPCTSTR)m_type,m_type.GetLength());
   fuk.Write(endline,1);
   fuk.Write((LPCTSTR)m_year,m_year.GetLength());
   fuk.Write(endline,1);
   fuk.Write((LPCTSTR)m_phone,m_phone.GetLength());
   fuk.Write(endline,1);
   fuk.Write((LPCTSTR)m_phone,m_simi.GetLength());
   fuk.Write(endline,1);
 fuk.Write((LPCTSTR)m_phone,m_daan.GetLength());
   fuk.Write(endline,1);
   fuk.Close();
  }
 UpdateData(FALSE);
 }
 3.3 信息安全处理模块
3.3.1 RSA 密钥管理模块
 在这个密钥生成模块中,该模块通过程序中的相关加密算法来随机生成发放给用户的私钥和房产管理中心留存和私钥成对的公钥文件,管理中心可以通过这个模块的生成密钥按钮,让计算机自动生存公钥和私钥,生成相应的密钥以后 公钥由管理中心统一管理,私钥文件会发放给相应的户主。以便户主在下一个模块中通过自己的私钥来对自己的数字房产证进行相应的签名,达到不可抵赖的作用通过对房密钥生成模块的测试,通过该子系统中RSA加密算法能够得出签名需要用到的签名私钥和管理中心用来验证签名后的证件的真伪的公钥。
 
    图6  密钥管理模块图
 RSA密码系统的安全性依赖于大数分解的难度,一般建议用户选择的素数p和q至少为100位,则n=pq是至少为200位的十进制数。因此实现RSA算法有必要定义大数的数据结构如图6所示。
 密钥生成,加密和解密涉及到一些大数的基本运算。定义大数的基本运算库,包括加、减、乘、除、取模运算等,其中最重要的模乘运算和模幂运算。

大学排名


 模幂算法是加密解密的核心算法。计算模幂的一种有效算法是“平方-乘”方法,通过对指数的二进制化来实现。大数数据的加,减,乘,除,模,模幂等由CBigInt这个类来完成,其定义如下:
 1.CBigInt类的定义
 class CBigInt
 {
 public:  //大数在0x100000000进制下的长度   
    unsigned m_nLength; //用数组记录大数在0x100000000进制下每一位的值
    unsigned long m_ulValue[BI_MAXLEN];
    CBigInt();
    ~CBigInt();
 /*****************************************************************
 基本操作与运算
 Mov,赋值运算,可赋值为大数或普通整数,可重载为运算符“=”
 Cmp,比较运算,可重载为运算符“==”、“!=”、“>=”、“<=”等
 Add,加,求大数与大数或大数与普通整数的和,可重载为运算符“+”
 Sub,减,求大数与大数或大数与普通整数的差,可重载为运算符“-”
 Mul,乘,求大数与大数或大数与普通整数的积,可重载为运算符“*”
 Div,除,求大数与大数或大数与普通整数的商,可重载为运算符“/”
 Mod,模,求大数与大数或大数与普通整数的模,可重载为运算符“%”
 *****************************************************************/
    void Mov(unsigned __int64 A);
    void Mov(CBigInt& A);
    CBigInt Add(CBigInt& A);
    CBigInt Sub(CBigInt& A);
    CBigInt Mul(CBigInt& A);
    CBigInt Div(CBigInt& A);
    CBigInt Mod(CBigInt& A);
    CBigInt Add(unsigned long A);
    CBigInt Sub(unsigned long A);
    CBigInt Mul(unsigned long A);
    CBigInt Div(unsigned long A);
    unsigned long Mod(unsigned long A);
    int Cmp(CBigInt& A);
/*****************************************************************
输入输出
Get,从字符串按10进制或16进制格式输入到大数
Put,将大数按10进制或16进制格式输出到字符串
*****************************************************************/
    void Get(CString& str, unsigned int system=HEX);
    void Put(CString& str, unsigned int system=HEX);
    int Rab();//米勒-罗宾算法
    CBigInt Euc(CBigInt& A); //欧几里
上一篇:免费H考试题库管理系统的设计与实现(一) 下一篇:免费vc++网上寻呼QICQ源代码(附带论文)(一)