免费获取|
论文天下网
  • 论文天下网 |
  • 原创毕业论文 |
  • 论文范文 |
  • 论文下载 |
  • 计算机论文 |
  • 论文降重 |
  • 毕业论文 |
  • 外文翻译 |
  • 免费论文 |
  • 开题报告 |
  • 心得体会 |

当前位置:论文天下网 -> 免费论文 -> 计算机论文

免费房产证信息数字签名的实现(六)

德算法求解同余方程
    CBigInt RsaTrans(CBigInt& A, CBigInt& B); //反复平方算法进行幂模运算
    void GetPrime(int bits); //产生指定长度的随机大素数
 CBigInt Gcd(CBigInt& A);
};
 2. RSA相关算法实现
 RSA算法实现比较重要的是素性检测,大随机数的产生,求逆运算等,分别由下面几个函数来完成,下面给出拉宾米勒算法。
 int CBigInt::Rab()
{
    unsigned i,j,pass;
    for(i=0;i<550;i++){if(Mod(PrimeTable[i])==0)return 0;}
    CBigInt S,A,I,K;
    K.Mov(*this);
 K.m_ulValue[0]--;
    for(i=0;i<5;i++)
    {
        pass=0;
        A.Mov(rand()*rand());
  S.Mov(K);
        while((S.m_ulValue[0]&1)==0)
  {
            for(j=0;j<S.m_nLength;j++)
   {
       S.m_ulValue[j]=S.m_ulValue[j]>>1;
       if(S.m_ulValue[j+1]&1)S.m_ulValue[j]=S.m_ulValue[j]|0x80000000;
   }
      if(S.m_ulValue[S.m_nLength-1]==0)S.m_nLength--;
   I.Mov(A.RsaTrans(S,*this));
   if(I.Cmp(K)==0){pass=1;break;}
  }
  if((I.m_nLength==1)&&(I.m_ulValue[0]==1))pass=1;
  if(pass==0)return 0;
 }
    return 1;
}
3.3.2 签名生成模块
 在签名产生模块中,户主通过管理中心发放给他的私钥,以及他刚刚通过数字证书生成模块得到的房产证文件,然后将这两个文件分别导入模块中,通过生成签名按钮及可以得到生成后的数字签名。这个签名由户主自己保存。密钥生成过程时间主要是生成随机素数的时间及计算公钥和私钥的模乘法的时间。如图7所示
            
  图7  签名生成模块图
 在数字签名过程中要对文件进行签名首先得用对要签名的文件进行数字摘要处理。在常见的生成数字摘要的方法有MD5和SHA-1,在本设计中对文件的消息摘要我们是通过SHA-1安全哈希算法来实现的。下面简要的介绍安全哈希算法的具体实现方法和代码:
  SHA-1安全哈希算法的实现
typedef struct {             /*SHA结构体定义*/
    unsigned long state[5];
    unsigned long count[2];
    unsigned char buffer[64];
} SHA1_CTX;
 void SHA1Transform(unsigned long state[5], unsigned char buffer[64]);/*传输函数,用于数据的转换和传、送*/
 void SHA1Init(SHA1_CTX* context);   /*初始化,对初始条件进行定义和说明*/
 void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int len);   /*  中间转换函数 */
 void SHA1Final(unsigned char digest[20], SHA1_CTX* context);     /* 得到最后的哈希表*/
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
/* blk0() and blk() perform the initial expand. */
/* I got the idea of expanding during the round function from SSLeay */
 #ifdef LITTLE_ENDIAN
 #define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
    |(rol(block->l[i],8)&0x00FF00FF))
 #else
 #define blk0(i) block->l[i]
 #endif
 #define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
    ^block->l[(i+2)&

首页 上一页 3 4 5 6 7 8 9 下一页 尾页 6/9/9

相关论文
上一篇:免费H考试题库管理系统的设计与实.. 下一篇:免费个人入侵检测系统的实现
推荐论文 本专业最新论文
Tags:房产证 信息 数字签名 实现 【返回顶部】

相关栏目

自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文


关于我们 | 联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 原创毕业论文

 

论文天下网提供论文检测,论文降重,论文范文,论文排版,网站永久域名WWW.GEPUW.NET

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 893628136@qq.com

Copyright@ 2009-2022 GEPUW.NET 论文天下网 版权所有