公钥和私钥[公钥和私钥的加密和解密过程]
2023年06月17日 01:35
欧易okx交易所下载
欧易交易所又称欧易OKX,是世界领先的数字资产交易所,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务,通过使用区块链技术为全球交易者提供高级金融服务。
今天给大家分享公钥和私钥的知识,也会讲解公钥和私钥的加密和解密过程。如果你碰巧解决了你现在面临的问题,不要';别忘了关注这个网站。如果你有不同的看法和意见,请在评论区积极留言,马上进入正题!
公钥和私钥是通过算法得到的一对密钥(即一个公钥和一个私钥),其中一个被公开,称为公钥;另一个由自己保存,称为私钥。该算法得到的密钥对可以保证在世界上是唯一的。。当使用这个密钥对时,如果一段数据用其中一个密钥加密,就必须用另一个密钥解密。例如,用公钥加密的数据必须用私钥解密,如果用私钥加密,也必须用公钥解密,否则解密不会成功。
本文内容涉及支付宝SDK,均摘自支付宝开放平台。
因为支付宝SDK使用RSA加密生成数字签名,所以本文涉及的概念也是针对RSA的。
生成一对子密钥后,将有一个公钥和一个私钥。我们需要保存私钥并发布公钥。一对公钥和私钥不能从其中之一派生。
比如我们商家在使用支付宝SDK的时候,会生成一对密钥A和B,其中A是私钥。b是公钥,支付宝还会生成一对子密钥C和D,其中C是私钥,D是公钥。我们的商人需要拯救商人';的私钥A并释放商家';s公钥B到支付宝,支付宝需要保存支付宝私钥c。并且把支付宝公钥D发布给我们商家。
加密是指我们使用一对子密钥中的一个来加密数据,另一个来解密数据的技术。应当注意,公钥和私钥都可以用于加密和解密。这不';t的意思是只有死了才能用公钥加密解密,但是加密解密必须是一对子密钥之间的相互加密解密,否则可以';我不会成功。
加密的目的是保证数据的不可读取性,防止数据在传输过程中被截获。
了解加密的概念后,让';我们先来看看支付宝的加密过程,然后介绍数字签名的概念。然后,在第1节的例子中,在我们的商家和支付宝互相发布公钥后,我们的商家就有了两个密钥:商家';的私钥和支付宝';的公钥。支付宝也有两把钥匙,商家';的公钥和支付宝';的私钥。现在假设我们的商户终端要向支付宝传输订单信息,那么为了保证传输订单信息时的数据安全,我们可以有两套加密方案结合我们商户终端持有的密钥
。看来这两种加密方案都可以达到对订单信息加密的效果,而如果采用第二种方案,我们的商家只需要存储支付宝公钥,他们不';维护它不需要申请商家的一对公钥和私钥。支付宝没有';不需要保存这么多我们商家的商家端公钥。不是';这不是更简单吗?那为什么支付宝开放平台让我们采用方案一而不是方案二?让';让我们来回答这个问题。
支付宝开放平台描述:当我们使用RSA(1024位密钥)进行加密时,支付宝';分配给所有商户的公钥都是一样的,就是支付宝只负责维护这么多商户的一对支付宝公私钥。这意味着支付宝公钥在任何人拿到之后都是一样的;当我们使用RSA2(2048位密钥)进行加密时,支付宝会给每个商户分配一个单独的支付宝公钥,也就是支付宝会为每个商户维护一对独立的支付宝公钥和私钥。当然,一个商家下多个app的支付宝公钥是一样的。长期以来一直支持RSA,最近才支持RSA2。
知道了上面这段话,让';假设我们采用第二种方案。并且使用RSA加密(许多老企业不';t使用RSA2加密),业务逻辑将如下。
这是个问题。在RSA加密下,支付宝';的公钥是公开发布的。而且所有商户都使用同一个支付宝公钥(上面说了支付宝在RSA2加密下为每个商户维护一对公私钥),攻击者很容易获取,notify_url也很容易被拦截。攻击者拿到这两样东西,就可以做和商家一样的操作发起支付请求,这样小明就会一直被扣钱。
所以支付宝需要确认支付请求确实是商家发给他们的,而不是攻击者。。这就用到数字签名,我们将通过方案一的实现过程来介绍数字签名的具体概念。如果我们采用第一种方案,我们的商家保留的就是商家';的私钥和支付宝';的公钥,而支付宝保留商家';的公钥和支付宝';的私钥。业务逻辑如下。
这样可以保证交易的安全性。我们也可以看到,使用支付宝SDK来保证交易的安全性,重点不在于订单信息是否加密,而在于如何保证商家和支付宝能够互相确认';的身份。订单信息是纯文本的,但它是用数字签名拼接的。
数字签名实际上是明文数据加密后得到的密文,但它是用私钥加密生成的。通常,我们会将数字签名拼接在明文数据之后,并将其传递给接收者。接收方收到后,用公钥解密数字签名,从而验证发送方的身份以及明文数据是否被篡改。数字签名的生成过程实际上是一个加密过程,数字签名的验证过程是一个解密过程。
数字签名有两个目的:一是发送方和接收方互相验证';的身份;其次,验证数据是否被篡改。
从上面第一部分我们知道,为了保证商家和支付宝的交易安全。该协议是将数字签名添加到订单信息中进行传输。支付宝还为我们提供了一个一键生成RSA密钥的工具,可以帮助我们快速生成一对商户端公私钥。下面大致讲解一下支付宝SDK的支付流程。,并指出了实际开发中使用支付宝SDK时需要注意的地方。
我们的商家生成的RSA私钥(必须与商家成对';的公钥)必须在生成后保存在服务器上,并且决不能保存在客户机上。,而且绝对可以';不能从服务器传输到客户端。
用于签署订单信息。签名过程必须在服务器上完成,不能在客户端完成。客户端只负责调用支付宝用已签订单信息支付。
我们商户生成的RSA公钥(必须和商户私钥成对)需要在支付宝开放平台填写。
用于我们签字后,支付宝服务器对订单信息进行核对和签字。保证订单信息确实是我们商家发给支付宝的,保证订单信息在传输过程中没有被篡改。
这与我们无关。支付宝';的私钥是自己生成的,自己保存的。
用于签署支付结果。
支付宝公钥和支付宝私钥是一对,也是支付宝生成的。当我们填写商户';支付宝开放平台上的s公钥,平台会为我们生成一个支付宝公钥,我们可以复制保存在服务器上。,也不要';不要保存在客户端,也不要';不要传输到客户端。
用于服务器验证支付宝服务器返回的同步或异步支付结果,以确保支付结果确实是支付宝服务器返回给我们的服务器,没有被篡改。支付结果的验证也必须在服务器端完成。
如上所述,订单信息的签署和支付结果的验证必须在服务器端完成,绝对不能在客户端完成。
下面是在客户端对订单信息进行签名的过程,只是模拟服务器端来展示订单信息是如何通过签名最终转化为orderString的。千万不要以为订单信息的签字过程也可以在客户端完成。
假设我们的服务器收到支付宝服务器的支付结果,也就是支付结果的数字签名。
然后我们的服务器会检查支付结果。怎么查呢?
我也是刚学的。让我给你看一个例子。,非常有用:
RSA算法总结如下:
求两个素数P和q
取n=p*q
取T=(P-1)*(Q-
取任意数e,要求et和t互质(即最大公因数为1)
取d*e%t==1
从而最终得到三个数:nde
设置消息个数。
设c=(M**d)%n得到加密的消息c
设m=(c**e)%n实现c的解密
注:**代表幂,上面两个公式中的D和E可以互换。
在加密中:
nd两个数构成一个公钥,可以告诉别人;
ne两个数字构成私钥,e自己保管,不让任何人知道。
发送给他人的信息是e加密的。只要别人能用D解锁,就证明信息是你发的,构成了签名机制。
别人给你发信息的时候用的是D加密,这样只有你有E才能解密
。公共公钥系统有两个主要功能:加密信息和认证。。因为内容,我';我会给你链接。请参考一下.它';这很容易理解
在现实生活中,我想把一枚比特币转移到伊一。我在比特币交易平台、比特币钱包或者比特币客户端都需要。,输入我的比特币钱包地址,伊一';的钱包地址,转账的比特币数量,以及手续费。然后,我们等了大约十分钟。矿工处理完交易信息后,这枚比特币被成功转移到伊一。
这个过程看起来简单方便。和我们现在的银行卡转账没什么区别,但是你知道这个过程在比特币系统里是怎么实现的吗?它隐藏了什么原则?或者说,它如何保证交易能够在安全的环境下进行?
Let';让我们今天就来谈谈吧。
对于发送方和接收方,也就是我和伊一(我是发送方,伊一是接收方),我们都需要产生两件事:钱包地址和私钥。
Let';我们先来谈谈钱包地址。。比特币钱包地址其实相当于银行卡、支付宝账户、微信钱包账户。这是一个"优惠券"用于比特币支付和转账,并记录平台、钱包和钱包之间的转账信息。
我们使用银行卡、支付宝、微信转账都需要密码,这样才能支付成功。那么,在比特币转账中,也有这样一个"密码",这叫做"私钥"。当你掌握了私钥,你就掌握了其对应的比特币地址上的生杀大权。
";私钥"属于"不对称加密算法",而与之相对应的还有另一个概念,叫做"公钥"。
公钥和私钥可以从字面上理解:公钥可以公开;私钥呢,是私人的,你自己的,需要绝对保密。
公钥是根据私钥计算的,比特币系统使用椭圆曲线加密算法根据私钥计算公钥。这使得有可能公钥和私钥形成了唯一的对应关系:当您使用其中一个密钥加密信息时,只有配对的另一个密钥才能解密它。因此,基于这种唯一的对应关系,它们可以用来验证信息发送者的身份,也可以绝对保密。
让';举例说明公钥和私钥在非对称加密算法中是如何工作的。
我们知道公钥是可以公开的,所以大家都知道我们的公钥。在转账的过程中,我不仅要确保比特币被转移到伊一。与其转给别人,我得让伊一知道这些比特币是我转给她的,不是鹿或者哥。
比特币系统可以满足我的上述诉求:比特币系统会把我的交易信息缩短成一个定长的字符串,也就是摘要。,然后把我的私钥附加到这个摘要上,形成一个数字签名。因为数字签名包含了我的私钥信息,所以数字签名可以证明我的身份。
完成后,完整的交易信息和数字签名将一起广播给矿工。矿工使用我的公钥来验证并查看我的公钥是否能匹配我的数字签名。如果验证成功,就没有问题。那么,就可以说明交易确实是我发的,信息没有被更改。
接下来需要对矿工进行验证。,在这次交易中花费的比特币是否是一个"未使用的"交易。如果验证成功,将其放入"未确认交易"并等待被包装;如果验证失败,交易将被标记为"无效交易"并且不会被打包。
实际上,公钥和私钥简单的理解就是:既然是加密的,那肯定是我不';t不想让别人知道我的消息,所以只有我能解密,所以可以得出结论,公钥负责加密,私钥负责解密;同样的道理,既然是签名,我肯定不';我不想让任何人冒充我的身份。只有我可以发布这个数字签名。因此可以得出结论,私钥负责签名,公钥负责验证。
这里,让';下面我们简单总结一下以上内容。上面主要讲了以下几个词:私钥,公钥,钱包地址,数字签名。让';让我们理清它们之间的关系:
(1)私钥由系统随机生成,公钥由私钥计算,钱包地址由公钥计算,即私钥——和公钥——的过程;
(2)数字签名由交易信息+私钥信息计算得出。因为数字签名隐含了私钥信息,所以可以证明其身份。
私钥和公钥都属于密码学领域,属于"椭圆加密算法"在"不对称加密"算法。之所以采用这种算法,是为了保证交易的安全性。他们的职能如下:
(1)公钥加密和私钥解密:公钥在全网公开,我用伊一';的公钥来加密信息,伊一可以用她自己的私钥解密;
(2)私钥签名,公钥验证:我给伊一发消息,我添加自己的私钥信息,形成数字签名。伊一用我的公钥验证,验证成功证明确实是我发的信息。
然而在比特币交易中,加密、解密、验证都是交给矿工的。
至于我们现在经常使用的钱包APP。,只是一个私人钥匙,钱包地址和其他区块链数据的管理工具。钱包分为冷钱包和热钱包。冷钱包离线,从不联网。一般以一些实体的形式出现,比如小笔记本。热门钱包联网。我们用的钱包APP属于热门钱包。
首先,很明显,公钥和私钥是成对出现的。一个负责加密,一个负责解密。公开的是公钥,保留的是私钥。因此加密和解密密钥都可以是公钥或私钥。。
所以如果有人给我发东西,我需要把加密密钥给别人,解密密钥自己藏起来。这是公钥加密和私钥解密。
如果我想让别人确认我的身份,我需要把解密密钥给别人,把加密密钥留给自己。自己加密,别人得到密文后可以用我的解密密钥解密。所以在这里,公钥负责解密,私钥负责加密。
例如,服务器证书通常包含许多字段,包括:
。当浏览器收到证书时,它将检查签名机构。如果这个机构是权威的公开签名机构,浏览器可能已经知道它的公钥(浏览器会预装很多签名机构的证书),然后用公钥解密,就可以得到相关信息。例如,获取证书中网站的名称和主机名,并查看它是否与当前浏览器地址栏中的地址匹配。如果没有';t匹配,浏览器会给你一个警告(你可能看到过),提示当前证书授予xxx域名,而不是授予当前域名,让你注意一下。
最近需要写一些生成证书的脚本,借此机会澄清了很多关于证书的疑惑。说起这个东西,名词多到爆炸。、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、openssl、PKCS、X.509和眼花缭乱的文件后缀。、cer、crt、pem、密钥库、jks、key、p12、PFX.[XY002][XY001]我先讲个故事。这一次,我们不';我不需要鲍勃和爱丽丝。听完我们再看这些概念,悬崖恍然大悟。
故事背景:这是2018年。为了通信安全,假设每个人都有两把锁,一把叫锁A,一把叫锁b,这两把锁和普通的锁有些不同,每把锁都有自己的锁眼和另一把锁的钥匙。所以锁A和锁B既是锁又是钥匙。锁A和锁B是唯一匹配的。锁A上锁后,只能打开锁B。同样,锁B被锁住后,只能打开锁A。其中一个锁是公共的,而另一个锁由自己保管,不是公共的。假设默认的A锁是公共的。锁是私有的。
故事内容:阿里巴巴小朋友的小明';s小学想给隔壁班的小花写一封告白信。为了不被别人看到,他把信放进邮箱,和小花一起锁上邮箱';这是一把锁。因为小华';sB锁(也是一把锁的钥匙)只有小华';自己的,除了小华谁都可以';当他收到信时,我没有看到信的内容。同样,小华要给小明写信,也要用小明';有一把锁保护着信的内容。
小明和小华就这样聊了一段时间。后来小花觉得差不多够了,可以进入秀恩爱的阶段了。他告诉小明,以后写信不要tm加密,也不是银行卡密码。如果人们被看见,他们能做什么?只是唐';看完就不要改了。。于是小明写完信后,把信里每个单词的拼音首字母拼凑起来,取名为消息摘要。然后他只是把消息摘要放进邮箱,用自己的B锁把邮箱锁上。虽然信本身没有放在安全的邮箱里,但小明作为情书高手。任何一封信都是几万字。如果别人对信的内容做了任何改动,拼音首字母组成的字符串几乎肯定会改变。因此,小花拿到信后,先用小明打开邮箱';sA锁(B锁的钥匙)。,把小明';s摘要,然后小华会对字母的内容做同样的处理(就是计算字母每个单词的拼音首字母不会用这么简单的算法,而是不可逆的哈希算法),计算出来的字符串值会和小明一致';的信息摘要。说明这封信是小明写给自己的,没有被任何人篡改过。故事的高潮:It'事情没那么简单。小华发现小明在信中对自己充满了热情。他通常不会';当他遇见他的时候,他甚至不打招呼,而且他看起来不像。我不认识他。。终于有一天,小华不能';没办法。她质问小明,小明却说,我什么时候给你写过情书?浪漫一点……于是小华把昨天刚收到的情书扔进了小明';的脸:"不是';签字的是你小明吗?"什么';怎么了?"小明真的有自己的名字在上面。但是唐';你不知道你是否写了吗?小明拿着作业本给小华,让同桌做笔迹鉴定。小华发现字迹真的不像。好像有人恶作剧,假扮小明给自己写情书。唉,真是尴尬。
故事结束了。文章开头涉及的所有概念都与信息的安全传输有关。关于通信安全,我们通常有三个基本要求
Let';让我们以上面的故事为例来谈谈这三个安全要求。一开始小明和小华是用A锁(对应公钥)加密的,B锁(对应私钥)的通信方式与第一点一致。信的内容本身是加密的,但是因为公钥和私钥是唯一配对的,只有配对的密钥才能解密,所以第三个人很难破解。
后来为了表示爱意,他们采用了B锁(私钥)加密,A锁(公钥)解密的通信方式,其中用私钥加密的字符串称为数字签名,这样信就能被人直接看到。但是如果被篡改了,你很容易发现数据被篡改了。我以为满足了第一条和第二条就可以安全交流了,可是最后发现小明根本不是小明!为什么会出现这样的问题?因为"小明"说他是小明,小华以为他是小明他没有';我不能提供任何证明来证明他确实是小明。所以为了安全沟通,我们也需要一个权威的第三方机构来做身份认证。该组织是CA组织。认证通过后,CA机构会颁发权威证书,有了证书,我们就可以证明自己的身份了。,就不会有身份造假。在认证过程中,您需要向CA机构提供您自己的身份信息和私钥。
对称加密是指通信双方或多方使用的密钥相同。加密和解密速度很快,但不够安全。因为一旦密钥泄露,任何人都可以解密数据。当然,非对称加密意味着双方使用的密钥是不同的。公钥和私钥是非对称加密的一种方式。常用的对称加密算法,如
AES和DES。Sha256和RSA是常见的非对称加密。
非对称加密算法有两个密钥,一个公钥和一个私钥。公钥和私钥必须成对出现,一对公钥和一个私钥统称为密钥。,并且密钥库可以存储多个密钥,即多对公钥和私钥。
如果你使用github,你应该注意到有两种方式链接github。一个是https,一个是ssh。经常需要通过https输入密码。,但不是通过ssh。回想一下设置ssh、在本地生成密钥对以及将公钥上传到github的步骤。每次传输都用自动本地私钥加密,服务器用你上传的公钥解密,不需要手动输入密码。
keytool和openssl是两个证书管理工具。keytool是javaJDK附带的一个证书管理工具。keytool可用于生成密钥和创建证书。只要安装了jdk并且正确设置了环境变量。,您可以通过从命令行执行keytool命令来管理证书。openssl是一个开源的安全套接字层密码库,功能比keytool更多。
PKCS的全称是公钥密码标准,PKCS已经发布了15个标准。
PKCS#12包含公钥和私钥的二进制格式证书形式,以pfx作为证书文件的后缀
X.509是通用的证书标准,规定了证书应该包含的内容。X.509通常有两种编码方式,一种是二进制编码,另一种是base64编码
X.509#DER二进制格式证书,带常用后缀。cer。crt
。X.509#PEM文本格式证书,常用后缀。pem
因为http是明文传输,非常不安全,所以提出了ssl(安全套接字层)层协议。即在原有的基础上增加一层协议保证安全传输,可以认为是https=sslhttp。很多人刚开始接触https,用浏览器F12打开控制台后。您可能会发现数据仍未加密。。注意https是传输层加密,你在浏览器F12控制台看到的是应用层的数据。
因为这篇文章主要是关于概念素养的,有助于理解,所以我赢了';不介绍这部分的具体细节。
。密钥库,jks和。信任库是java用来存储密钥
的所有文件。keynginx
中的私钥文件。不同的证书文件后缀用于区分不同种类的证书。有两个主要的分类维度
。关于公钥和私钥的介绍到此为止。感谢您花时间阅读本网站的内容。有关公钥和私钥的加密和解密过程的更多信息,请参阅don'别忘了在这个网站上查找。
推荐阅读
- 上一篇:艾达币虚拟货币
- 下一篇:家里人相信虚拟货币犯法吗
-
企业币和虚拟货币?有什么本质区别吗?
1970-01-01
、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、op...
-
不是虚拟货币可以赚钱吗 你身边有没有玩虚拟币的人。他们都有挣到钱了吗?
1970-01-01
、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、op...
-
虚拟币挖矿交易平台(虚拟货币挖矿是什么意思)
1970-01-01
、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、op...
-
虚拟货币合约交易软件下载 巅峰极速合约150个合约币怎么获得
1970-01-01
、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、op...
-
虚拟币平台哪个好用(虚拟币平台哪个好用点)
1970-01-01
、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、op...
-
北交所换虚拟货币(北京证券交易所的落地将带来哪些机遇?有什么影响和意义?)
1970-01-01
、对称加密、非对称加密、密钥、密钥库、公钥、私钥、CA、证书、数字签名、ssh、https、ssl、keytool、op...