基于证书的RSA签名系统的设计与实现
扫描二维码
随时随地手机看文章
办公自动化OA(Office AutomatizatiON)从最初的以大规模采用复印机等办公设备为标志的初级阶段,发展到今天的以运用网络和计算机为标志的现阶段,对企业办公方式的改变和效率的提高起到了极大的促进作用。该系统采用了独立的RSA算法确保了办公过程中公文流转的真实性和有效性。
1 RSA算法及数字证书
1.1 RSA 算法简介
(1)密钥的生成
密钥的生成过程:
①选择两个大素数p,q,(p,q 为互异素数,需要保密);
②计算n = p×q,φ(n) = (p-1)×(q-1);
③选择整数 e 使 (φ(n),e) =1, 1<e< φ(n);
④计算d,使d = e-1mod φ(n), 得到:公钥KU={e,n};私钥KR={d,n}。
(2)加密用(e,n)加密用(e,n):明文:M < n,密文C = Me(mod n)。
(3)解密用(d,n)解密用(d,n):密文C,明文M = Cd(mod n)。
1.2 数字证书
数字证书是一个经证书授权中心签名的包含公开密钥拥有者及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的签名。一般情况下证书还包含密钥的有效时间,发证机关,该证书的序列号等信息。
2 系统分析与设计
2.1 系统的工作原理
(1)签名过程
对要签名的文档,首先进行散列运算(SHA1 或MD5)得到文档摘要,从证书中得到要签名的私钥,然后对获取到的散列值进行签名。
(2)验证过程
验证过程是签名过程的逆。当验收者收到签名文件时,首先用指明的散列函数对原始文件进行散列,然后导入签名者的公钥对签名值进行RSA 解密,最后对该解密值与散列值进行比较。
2.2 模块设计
软件系统主要有证书生成模块、摘要处理模块、签名模块和验证模块组成。
证书生成模块:负责提供签名所需的密钥,用两个txt文件保存,一个用于保存公钥,一个用于保存私钥;摘要处理模块:对要签名的文档生成散列的摘要,该系统提供生成16 个字节的MD5 算法,和生成20 个字节的SHA1 算法;签名模块:通过RSA 算法对对文档摘要进行签名,将签名后的结果以txt 文档保存;验证模块:用RSA 算法对签名后的txt 文档进行验证,并返回验证结果。
2.3 系统流程
系统具体流程如图1 所示。
图1 系统流程
3 系统实现
据软件功能模块设计,系统定义了三个公共类:MDE5散列算法类(MD5_CTX)、哈希类(CHash)、RSA 算法类(CRsa)。
系统中主要有的函数有:Encrypt(char *OutFile,char *InFile,char *RsaKeySTr,char*RsaModStr):根据摘要生成签名;Decrypt(char *InFile,char *RsaKeyStr,char *RsaModStr):根据签名还原出摘要;OnSHA1Hash():对选定的文件进行SHA1 算法;OnMD5Hash():对选定的文件进行MD5 运算。
4 安全性的分析
RSA 算法所用的密钥来自生成的证书,当申请者填入相关信息后生成两个txt 文件,一个存放私钥,一个存放公钥。
其中私钥用口令加密了,保证了私钥的安全。公钥文件,进行了自签名,这样就保证了其完整性。密钥的管理也更加方便。
5 结语
这里系统经过测试系统具有良好的运行效率,引入了证书来保存相关的密钥信息。解决了以前的一些签名系统密钥的管理问题,并且满足了系统安全的基本要求。方便易用并具有一定的安全强度,有效防止了文件传输过程中的破坏和篡改。