志在指尖
用双手敲打未来

数字签名的原理(实现过程)

数字签名的原理

RSA是现在最有影响力的公钥加密算法,它能够抵抗到现在为止已知的绝大多数暗码进犯,已被ISO推荐为公钥数据加密规范。
RSA算法支撑公钥加密、私钥解密以及私钥加密、公钥解密。
公钥暗码体系即揭露密钥暗码体系,也称非对称暗码体系或双密钥暗码体系。1978年由美国麻省理工学院的Rivest、Shamir和Adleman共同提出了第一个有用的公钥暗码体系——RSA公钥暗码体系,现在RSA仍然应用于网络银行、电子交易等许多电子商务范畴。
一、RSA公钥暗码原理
1.参数界说与密钥生成
(1)用户首要隐秘挑选两个大素数p,q,然后核算出N=pq。
(2)用户核算出p-1和q-1的最小公倍数n,然后随机挑选一个整数e,满意1
(3)然后用户运用加密密钥e和n可容易地核算出脱密密钥d,使得:ed(modn)=1,有时也称d为脱密指数。
(4)用户将加密密钥及大合数(e,N)发布为其揭露参数,而将两个大素数p,q及脱密密钥d严格保密作为隐秘参数。
2.加密、解密公式
设明文为m,密文为c,E表明加密算法,D表明脱密算法,于是有:
加密:c=E(m)=m^e(modN)
解密:m=D(c)=c^d(modN)
RSA算法用C++完成:之后显示的成果
手写大数类完成+-*/%<<>>等运算符号重载
然后按照RSA加密算法来完成
依据上面的算法
加密:c=E(m)=m^e(modN)
解密:m=D(c)=c^d(modN)
我们应该完成大数类的幂运算和求余数运算
幂运算能够用快速幂算法运算也便是二进制乘法运算
算法完成效果图如下:代码:
URL:
https://github.com/KevinJey/RSA-Algorithm
再次简述以下完成进程:
完成进程:
1随意挑选两个大的质数p和q,p不等于q,核算N=p*q。
2依据欧拉函数,求得r=(p-1)(q-1)
3挑选一个小于r的整数e,求得e关于模r的模反元素,命名为d。(模反元素存在,当且仅当e与r互质)
将p和q的记载销毁。
数字签名算法DSA
DSA算法不能用于加密和解密也不能进行密钥交流只能用于签名所以它比RSA要快许多安全性于RSA差不多
数字签名算法和公钥加密算法的差异是什么呢?
签名算法用来确保信息发布人的身份和信息的完好性,不能用来做加密传输,所以有必要伴着信息原文或者信息摘要一同发送和发布才干被验证。RSA是公钥加密体系,能够用来加密传输,也能够完成签名验证。
数字签名算法——ECDSA
椭圆曲线数字签名算法ECDSA是运用椭圆曲线暗码ECC对数字签名算法DSA的模仿。
ECC于RSA比较有以下的优点:
1)同样的密钥长度下,安全性更高。
2)核算量小速度快再处理私钥的速度上远比RSADSA要快许多
3)存储空间占用小ECC的密钥尺寸和体系参数比RSADSA要小许多所以占用的存储空间要小得多
4)低带宽要求
比特比所运用的数字签名算法便是椭圆曲线数字签名算法
对称加密算法
OpenSSL总共供给了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支撑电子暗码本形式(ECB)、加密分组链接形式(CBC)、加密反应形式(CFB)和输出反应形式(OFB)四种常用的分组暗码加密形式。其中,AES运用的加密反应形式(CFB)和输出反应形式(OFB)分组长度是128位,其它算法运用的则是64位。事实上,DES算法里边不仅仅是常用的DES算法,还支撑三个密钥和两个密钥3DES算法。
非对称加密算法
OpenSSL总共完成了4种非对称加密算法,包含DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交流。RSA算法既能够用于密钥交流,也能够用于数字签名,当然,假如你能够忍受其缓慢的速度,那么也能够用于数据加密。DSA算规律一般只用于数字签名。
当然也有ECCECDSA两种数字椭圆曲线数字签名算法
数字签名技术是将摘要信息用发送者的私钥加密,与原文一同传送给接收者。接收者只有用发
送者的公钥才干解密被加密的摘要信息,然后用HASH函数对收到的原文发生一个摘要信息,与解密的摘要信息对比。假如相同,则阐明收到的信息是完好的,在传输进程中没有被修改,不然阐明信息被修改过,因此数字签名能够验证信息的完好性。
数字签名是个加密的进程,数字签名验证是个解密的进程。
摘要指令
OPENSSL完成了五种信息摘要算法,分别是:MD2MD5MDC2SHARIPEMD
sha算法包含了sha1和sha
摘要的效果一般有:
1.确认数据完好性2.保存暗码,有些暗码是直接再数据库中采用MD5保存的
另外摘要的一个重要特性——摘要不可逆
对文件1.txt运用求md5摘要:
生成暗码和BASE64
生成暗码需求运用的规范指令为passwd用法如下:
-1:运用md5加密算法
生成密钥对
运用rsa
opensslrsa-in1.txt-out567.pub-pubont
创立证书
运用openssl工具创立CA证书和申请证书时,需求先查看配置文件,配置文件中对证书存放的位置等相关信息都有清晰的界说详细能够参考
/etc/pki/tls/openssl.cnf文件
先创立为CA所供给的目录文件
指明证书的开端编号
umask077表明只用root用户才有权限对其进行操作
opensslgenrsa-outPATHbitnum
表明能够在指定途径下生成4096为的私钥
创立证书opensslreq-new-x509-keyPATH-outDESTPATH-days3650
生成自签证书
指令中用到的选项解释:
-new:表明生成一个新证书签署恳求
-x509:专用于CA生成自签证书,假如不是自签证书则不需求此项
-key:生成恳求时用到的私钥文件
-out:证书的保存途径
-days:证书的有用期限,单位是day(天),默认是365天
颁布证书
在需求运用证书的主机上生成证书恳求
生成私钥→生成证书签署恳求并填写信息
CA服务器拿到证书签署恳求后颁布证书
当然也能够通过opensslCA-revokePATH以此撤消证书

数字签名

数字签名的原理实现过程

1)对称加密与非对称加密
对称加密:对文件的加密和解密选用的都是同一个密钥,有IDEA和DES两种加密算法
非对称加密:有一对公钥和私钥假如咱们运用公钥加密,有必要得用私钥解密;假如运用私钥加密,则有必要运用公钥解密。
当运用的加密和解密式两种不同的密钥咱们称之为非对称加密
2)信息摘要:
对数据进行处理,得到一段固定长度的成果。
一般在进行数字签名的时候咱们先对文件运用HASH算法核算其信息摘要,然后对该摘要进行数字签名。
信息摘要特点有:
1.输出长度固定,所以输出长度与输入长度无关
2.不可逆,输出数据无法推倒出输入数据
3.对输入数据很灵敏,关于极小的改变输出数据也会发生显着的改变
4.防碰撞用不同数据得到相同成果的可能性极低
3)数字签名原理
咱们可以用一张图来弄懂数字签名的原理.关于原报文.咱们核算完摘要之后会把它用私钥进行加密然后把原报文.公钥和秘要之后的数字签名传给另一方另一方需要得到摘要它的对比方式是.
关于数字签名运用公钥解密得到加密前的摘要在对原报文选用原先得到摘要时的单项哈希算法来得到摘要从而对比摘要是否被掉包或是被更改.

未经允许不得转载:IT技术网站 » 数字签名的原理(实现过程)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载