173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

rsa加密和签名的区别

keros@mark 2022-11-06 资讯中心

今天给各位分享rsa加密和签名的区别的知识,如果能碰巧解决你现在面临的问题,别忘了关注本站。

本文目录一览

四、公钥和私钥,加密和数字签名

本文涉及到支付宝SDK的内容,均摘自支付宝开放平台。

因为支付宝SDK使用RSA来加密和生成数字签名,所以本文中涉及到的概念也都是针对于RSA的。

一对儿密钥生成后,会有公钥和私钥之分,我们需要把私钥保存下来,而把公钥发布出去。一对儿公钥和私钥,不能由其中一个导出另一个。

比如使用支付宝SDK的时候,我们商户端会生成一对儿密钥A和B,A是私钥,B是公钥,支付宝也会生成一对儿密钥C和D,C是私钥,D是公钥。我们商户端需要把商户端私钥A保存下来,而把商户端公钥B发布出去给支付宝,支付宝需要把支付宝私钥C保存下来,而把支付宝公钥D发布出去给我们商户端。

加密是指我们使用一对儿密钥中的一个来对数据加密,而使用另一个来对数据解密的技术,需要注意的是公钥和私钥都可以用来加密,也都可以用来解密 ,并不是规定死了只能用公钥加密私钥解密,但是加解密必须是一对儿密钥之间的互相加解密,否则不能成功。

加密的目的是为了保证数据的不可读性,防止数据在传输过程中被截获。

知道了加密这个概念,我们先看一下支付宝的加密过程,再引出数字签名这个概念。接着第1小节的例子,当我们商户端和支付宝互相发布了公钥之后,我们商户端手里就有 商户端私钥 和 支付宝公钥 两个密钥,支付宝手里也有 商户端公钥 和 支付宝私钥 两个密钥。现在假设我们商户端要给支付宝传输订单信息,那么为了保证传输订单信息时数据的安全性,结合我们商户端手里所拥有的密钥,可以有两套加密方案

貌似这两套加密方案都能达到对订单信息加密的效果,而且如果采用方案二,我们商户端甚至只需要存储支付宝公钥这一个密钥,都不用去申请一对儿商户端的公私钥来维护,支付宝也不用保存我们一堆商户那么多的商户端公钥了,这不是更简单吗,那为什么支付宝开放平台让我们采用的是方案一而不是方案二呢?下面来回答一下。

支付宝开放平台说明:当我们采用RSA(1024位密钥)来加密的时候,支付宝分配给所有商户的支付宝公钥都是一样的,即支付宝针对那么多的商户只负责维护一对儿支付宝公私钥,这就意味着支付宝公钥随便什么人拿到后都是一样的;而当我们采用RSA2(2048位密钥)来加密的时候,支付宝会分配给每个商户单独的一个支付宝公钥,即支付宝为每一个的商户单独的维护一对独立的支付宝公私钥,当然一个商户下的多个App的支付宝公钥是一样的。RSA是早就支持的,RSA2是最近才支持的。

知道了上面这段话,现在假设我们采用的是方案二,并且采用RSA加密(很多老业务并没有使用RSA2加密),业务逻辑将会是下面这样。

这就出问题了, RSA加密下,支付宝公钥是公开发布的,而且所有的商户用的都是同一个支付宝公钥(上面声明了RSA2加密下,支付宝才针对每个商户维护了一对儿公私钥),攻击者很容易就能获取到,而 notify_url 也很容易被截获,那攻击者拿到这两个东西就可以做和商户一样的操作来发起支付请求,这样就会一直给小明充钱了。

所以 支付宝就需要确认支付请求确实是商户发给他们的,而不是攻击者发给他们的。 这就用到了 数字签名 ,我们会通过方案一的实现流程来引出数字签名的具体概念。如果我们采用的是方案一,我们商户端保存的就是商户端私钥和支付宝公钥,而支付宝保存的就是需要存着商户端公钥和支付宝私钥的,业务逻辑将会是下面这样。

这样就可以保证交易的安全性了,我们也可以看出使用支付宝SDK保证交易的安全性注重的其实不是订单信息是否加密,而是如何确保商户端和支付宝能够互相确认身份,订单信息是明文的,但是后面拼接了数字签名。

数字签名其实就是明文数据加密之后得到的一个密文,只不过它是用私钥加密生成的而已,我们一般会把数字签名拼接在明文数据后面一起传递给接收方,接收方收到后用公钥解密数字签名,从而验证发送方的身份、以及明文数据是否被篡改。数字签名的生成过程其实就是一个加密过程,数字签名的验签过程就是一个解密过程。

数字签名的目的有两个:一、发送方和接收方互相验证身份;二、验证数据是否被篡改。

从上面第一部分我们知道为了确保商户和支付宝交易的安全性,约定采用的是给订单信息加数字签名传输的方式。支付宝也为我们提供了 一键生成RSA密钥的工具 ,可以帮助我们很快的生成一对商户端公私钥。以下会对支付宝SDK的支付流程做个大概的解释,并点出实际开发中我们使用支付宝SDK时应该注意的地方。

由我们商户端自己生成的RSA私钥(必须与商户端公钥是一对),生成后要保存在服务端,绝对不能保存在客户端,也绝对不能从服务端传输给客户端。

用来对订单信息加签,加签过程一定要在服务端完成,绝对不能在客户端做加,客户端只负责用加签后的订单信息调起支付宝来支付。

由我们商户端自己生成的RSA公钥(必须与商户端私钥是一对),生成后需要填写在支付宝开放平台。

用来给支付宝服务端验签经过我们加签后的订单信息,以确保订单信息确实是我们商户端发给支付宝的,并且确保订单信息在传输过程中未被篡改。

这个和我们就没关系了,支付宝私钥是他们自己生成的,也是他们自己保存的。

用来对支付结果进行加签。

支付宝公钥和支付宝私钥是一对,也是支付宝生成的,当我们把商户端公钥填写在支付宝开放平台后,平台就会给我们生成一个支付宝公钥,我们可以复制下来保存在服务端,同样不要保存在客户端,并且不要传输给客户端。

用来让服务端对支付宝服务端返给我们的同步或异步支付结果进行验签,以确保支付结果确实是由支付宝服务端返给我们服务端的,而且没有被篡改,对支付结果的验签工作也一定要在服务端完成。

上面已经说过了: 订单信息的加签和支付结果的验签是一定要在服务端做的,绝对不能在客户端做。

下面是在客户端对订单信息加签的过程,仅仅是为了模拟服务端来表明订单信息是如何通过加签最终转变为orderString的, 千万不要觉得订单信息的加签过程也可以放在客户端完成 。

假设我们服务端收到了来自支付宝服务端的支付结果,即: 支付结果+数字签名 。

那么我们服务端就会对支付结果进行验签,怎么个验法呢?

加密证书和签名证书有什么区别?

1 加密证书

用户基于NTFS对文件加密,重装系统后加密文件无法被访问的问题的解决方案(注意:重装Win2000/XP前一定要备份加密用户的证书):

步骤一:以加密用户登录计算机。

步骤二:单击“开始→运行”,键入“mmc”,然后单击“确定”。

步骤三:在“控制台”菜单上,单击“添加/删除管理单元”,然后单击“添加”。

步骤四:在“单独管理单元”下,单击“证书”,然后单击“添加”。

步骤五:单击“我的用户账户”,然后单击“完成”(如图2,如果你加密用户不是管理员就不会出现这个窗口,直接到下一步) 。

步骤六:单击“关闭”,然后单击“确定”。

步骤七:双击“证书——当前用户”,双击“个人”,然后双击“证书”。

步骤八:单击“预期目的”栏中显示“加密文件”字样的证书。

步骤九:右键单击该证书,指向“所有任务”,然后单击“导出”。

步骤十:按照证书导出向导的指示将证书及相关的私钥以PFX文件格式导出(注意:推荐使用“导出私钥”方式导出,这样可以保证证书受密码保护,以防别人盗用。另外,证书只能保存到你有读写权限的目录下)。

保存好证书

注意将PFX文件保存好。以后重装系统之后无论在哪个用户下只要双击这个证书文件,导入这个私人证书就可以访问NTFS系统下由该证书的原用户加密的文件夹(注意:使用备份恢复功能备份的NTFS分区上的加密文件夹是不能恢复到非NTFS分区的)。

最后要提一下,这个证书还可以实现下述用途:

(1)给予不同用户访问加密文件夹的权限

将我的证书按“导出私钥”方式导出,将该证书发给需要访问这个文件夹的本机其他用户。然后由他登录,导入该证书,实现对这个文件夹的访问。

(2)在其也WinXP机器上对用“备份恢复”程序备份的以前的加密文件夹的恢复访问权限

将加密文件夹用“备份恢复”程序备份,然后把生成的Backup.bkf连同这个证书拷贝到另外一台WinXP机器上,用“备份恢复”程序将它恢复出来(注意:只能恢复到NTFS分区)。然后导入证书,即可访问恢复出来的文件了。

2.电子签名证书:采用多种加密方法,但可以通过易于理解的RSA(Rivest Shamir Adleman)公钥体系为例简述其原理。RSA加密基于一个无法对大数进行分解质因子的数学假设,使用2 个大素数的函数,一个作为公共密钥,另一个作为私人密钥,由于这2 个密钥是互补的,公共密钥加密的密文可以用私人密钥解密,反之亦然。因而邮件发送者只需要使用收件人的公共密钥加密邮件,加密后的邮件只有拥有私人密钥的收件人才可能有办法解密阅读,也就实现了邮件的加密,从而保证了邮件不会被任何第三者所阅读,即使在传输的过程中被第三者截取仍然不至于泄密。

申请电子证书 注册完成后,接着需要申请电子证书,对于电子签名来说,最重要的是要有一个电子证书,以证明签名的真实性 ...编辑邮件时,您就可以通过邮件编辑窗口工具栏上的“签名”和“加密”按钮。

openssl 加密算法区别

openssl加密算法区别是:RSA/DSA ,不同的是RSA可以用于加/解密,也可以用于签名验签,DSA则只能用于签名。至于SHA则是一种和md5相同的算法。

它不是用于加密解密或者签名的,它被称为摘要算法。就是通过一种算法,依据数据内容生成一种固定长度的摘要,这串摘要值与原数据存在对应关系,就是原数据会生成这个摘要,但是,这个摘要是不能还原成原数据的。

正常情况下是这样的,这个算法起的作用就是,如果你把原数据修改一点点,那么生成的摘要都会不同,传输过程中把原数据给你再给你一个摘要,你把得到的原数据同样做一次摘要算法,与给你的摘要相比较就可以知道这个数据有没有在传输过程中被修改了。

openssl加密算法的实际运用:

实际应用过程中,因为需要加密的数据可能会很大,进行加密费时费力,所以一般都会把原数据先进行摘要,然后对这个摘要值进行加密,将原数据的明文和加密后的。

摘要值一起传给你。这样你解开加密后的摘要值,再和你得到的数据进行的摘要值对应一下就可以知道数据有没有被修改了。

而且,因为私钥只有你有,只有你能解密摘要值,所以别人就算把原数据做了修改,然后生成一个假的摘要给你也是不行的,你这边用密钥也根本解不开。

产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。rsa加密和签名的区别的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。

产品列表
产品封装
友情链接