RSA公私钥和签名、验签过程

如题所述

第1个回答  2022-07-04
RSA又叫非对称加密算法,这类加密算法有2个秘钥,你可以选择一个作为私钥(自己保存,重要),另一个作为公钥(对外公开,谁都可以知道)。其中用私钥加密的内容只能用对应的公钥解密,同理用公钥加密的内容也只能用对应的私钥解密。

假设A生成了一对秘钥,私钥自己保存,公钥对外公开,且B获得了A的公钥。在A和B通信的过程中:
A向B发送信息:A用自己的私钥加密,B可以用其公钥解密;
B向A发送信息:B用(A给的)公钥加密数据,A可以用自己的私钥解密;
这样就保证了数据的安全传输;但是这中间存在问题,如果B向A发送数据的过程中被C拦截了,且C也获得了A的公钥,这样C就可以用公钥重新加密一份数据发送给A,这样就篡改了B发送给A的数据。为了辨别这种情况,就要说到数字签名的作用了。

因为在数据传输过程中有可能被篡改,因此我们要使用数字签名技术来校验发送方的身份,并且事后发送方无法抵赖。这里还以A和B为例,来看下数字签名的主要过程:

数字签名是什么?

RSA公私钥和签名、验签过程
A向B发送信息:A用自己的私钥加密,B可以用其公钥解密;B向A发送信息:B用(A给的)公钥加密数据,A可以用自己的私钥解密;这样就保证了数据的安全传输;但是这中间存在问题,如果B向A发送数据的过程中被C拦截了,且C也获得了A的公钥,这样C就可以用公钥重新加密一份数据发送给A,这样就篡改了B发送...

RSA加密\/解密和签名\/验签过程理解
RSA签名的过程如下:(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。(2)A给B发送消息,A先计算出消息的消息摘要,然后使用自己的私钥加密消息摘要,被加密的消息摘要就是签名.并将签名和消息本身(签名原文)一起传递给B.(A用自己的私钥给消息摘要加密成为签...

OpenSSL RSA常用命令
RSA在日常操作中,常见的加解密和签名验签流程如下:加解密过程:首先,通过以下步骤进行公钥加密和私钥解密: 从私钥文件key.pem导出公钥,生成pubkey.pem。 使用公钥对文本text.txt进行加密,生成加密文件test.enc。 然后,使用私钥对加密文件test.enc进行解密,得到原始文本test.dec。 接着是...

RSA加密、解密、签名、验签的原理及方法
RSA的加密过程如下:RSA签名的过程如下:总结:公钥加密、私钥解密、私钥签名、公钥验签。RSA加密对明文的长度有所限制,规定需加密的明文最大长度=密钥长度-11(单位是字节,即byte),所以在加密和解密的过程中需要分块进行。而密钥默认是1024位,即1024位\/8位-11=128-11=117字节。所以默认加密前的明...

Python RSA签名、AES密钥加密
具体步骤包括:生成秘钥对,互换公钥,使用公钥加密和私钥解密,以及使用私钥签名和公钥验签。Python实现RSA加密依赖于PyCryptodome库。RSA推荐的密钥位数为2048位,以保证安全性。实际操作中,加密和解密的流程需要根据具体接口的要求进行调整。此外,AES加密算法作为对称加密标准,被广泛用于安全通信。它提供了一...

测试那些事儿(十三)- 签名和验签、公钥和私钥、加密和解密
在此过程中,接口调用者需要进行的工作就叫做 签名 ,而被调用者需要进行的工作就叫做 验签 。公钥 :由接口被调用方提供,RSA 密钥体系中对外公开的部分,通常用于数据加密、验证数字签名。 私钥 :由接口被调用方提供,RSA 密钥体系中非公开的部分,需由接口调用方严密保存,通常用于数据解密、数据...

小程序RSA加密、解密、加签、验签
\/\/ RSA加签     var sign_rsa = new RSA.RSAKey();\/\/privateKey_pkcs1需要是---BEGIN PRIVATE KEY---开头的私钥     sign_rsa = RSA.KEYUTIL.getKey(privateKey_pkcs1);    console.log('签名RSA:')    console.log(sign_rsa...

区块链怎么验签?
区块链电子发票读取不了签名怎么回事1、在网络上传过程中,网络异常导致无法读取。2、税局验签系统故障也会导致读取不了签名。区块链中的私钥和公钥公开密钥(publickey,简称公钥)、私有密钥(privatekey,简称私钥)是密码学里非对称加密算法的内容。顾名思义,公钥是可以公开的,而私钥则要进行安全保管...

数字签名和数字证书
在进行信息传递时,信息发送者用私钥生成签名并将公钥一起发送给信息接收者,接收者使用公钥验签。上述过程中信息完整性得到校验,但发送者的身份是否合法无法得知(因为任何人都可以声称自己是合法的),因此引入了 身份认证机构 。身份认证机构是 信息接收者 能信任的机构,所有的公钥必须向该机构进行注册...

php 支付宝接口官方给的md5签名版本和rsa签名版本的区别
首先你需要准备下面的东西:php的openssl扩展里已经封装好了验签的方法openssl_verify。如果在Windows下的php.ini需要开启Openssl模块: extension=php_openssl.dll 商户私钥:即RSA私钥,按照手册,按以下方式生成:openssl genrsa -out rsa_private_key.pem 1024 商户公钥:即RSA私钥,按照手册,按以下方式...

相似回答
大家正在搜