RSA 加密,解密,验证签名过程

1. RSA 签名验证

A和B分别具有自己的公钥和私钥。A知道自己的公私钥和B的公钥,B知道自己的公私钥和A的公钥匙。

流程如下:

A 方:

1. A利用hash算法对明文信息message进行加密得到hash(message),然后利用自己对私钥进行加密得到签名,如下

PrivateA(hash(message))=sign

2. 利用B的公钥对签名和message进行加密,如下:

PublicB(sign+message)=final

B 方:

1. 利用自己的私钥解密

PrivateB(final)=sign+message

2.利用A的公钥钥对签名进行解密

PublicA(sign)=hash(message)

3.利用与A相同对hash算法对message加密,比较与第二步是否相同。验证信息是否被篡改

 

一般我认为RSA加解密共有两种方案,一种是通信双方共用一套公私密钥(公钥双方共有,私钥发送者保持);一种是通信双方一人一套公私密钥(通信时互换双方的公钥,安全性比较高)。显然第一种方式安全性低一些,并且复杂度低;第二种方式安全性高,但是复杂度高。

双方公用一套公私密码,这种情况下,对明文数据进行hash,可以验证签名,但是无法比对信息,是否可以验证签名成功,就意味信息没有篡改?这里不太清楚。

流程如下:

A 方:

1. A利用hash算法对明文信息message进行加密得到hash(message),然后利用自己对私钥进行加密得到签名,如下

PrivateA(hash(message))=sign

B 方:

1.利用A的公钥钥对签名进行解密

PublicA(sign)=hash(message)

或者:

A 方:

1. A利用自己对私钥进行加密得到签名,如下

PrivateA(message)=sign

B 方:

1.利用A的公钥钥对签名进行解密

PublicA(sign)=message

2. RSA 加密解密

RSA加密解密相对简单,A用B的公钥加密,B用自己的私钥进行解密就可以

 

你可能感兴趣的:(java技术,互联网技术栈)