密码学相关知识梳理

那么如何解出 g 呢?设我们也根据上面的公式套用一下,用同样的方式解密,如下所示。其中 d 是私钥,将 A 进行解密得到 g。

密码学是研究编制密码和破译密码的技术科学。

私钥加密公钥解密 私钥加密公钥解密用在什么方面私钥加密公钥解密 私钥加密公钥解密用在什么方面


私钥加密公钥解密 私钥加密公钥解密用在什么方面


1949年,信息论始祖克劳德·艾尔伍德·香农(Claude Elwood Shannon)发表了《保密系统的通信理论》一文,把密码学建立在严格的数学基础之上,奠定理论基础,从此成为真正的科学。

1976年,密码学专家惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)两人发表了《密码学的新方向》一文,解决了密钥管理的难题,把密钥分为加密的公钥和解密的私钥,提出了密钥交换算法Diffie-Hellman。

1977年,美国标准技术研究所制定数据加密标准(Data Encryption Standard ),将其颁布为标准。

1977年,麻省理工学院的罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Sha)和伦纳德·阿德曼(Leonard Adleman)一起提出RSA加密算法,RSA就是他们三人姓氏开头字母拼在一起组成的。

1997年4月,美国ANSI发起征集AES(aanced encryption standard)的活动,并为此成立了AES工作小组,经过几年的时间筛选,最终采用了由比利时的Joan Daemen和Vincent Rijmen设计的Rijndael算法,并在2002年5月26日成为有效的加密标准。

按密码体制划分:对称密码体制密码学和非对称密码体制密码学对应的有对称密码算法和非对称密码算法。

消息摘要算法又称散列算法,其核心在于散列函数的单向性,即通过散列函数可获得对应的散列值,但不可通过该散列值反推其原始信息,这是消息摘要算法的安全性的根本所在,我们通常使用该算法判断数据的完整性。

消息摘要算法我们常见比如MD(Message Digest)、SHA(Secure Hash Algorithm)、HMAC(Hash Message Authentication Code)等,常用于验证数据的完整性,是数字签名算法的核心算法。

我们以微信支付的接口调用分析一下摘要算法怎么应用的,首先可以打开微信支付如下相关文档:

微信支付统一下单接口文档

微信支付签名过程

对称加密简单的说就是加密和解密使用同一个密钥,解密算法是加密算法的逆运算。

对称加密算法主要有DES、DES算法的变种DESede、DES替代者AES算法、IDEA、PBE等

非对称加密算法称为双钥或公钥加密算法,跟对称加密算法不同的是,对称加密算法只一个密钥,非对称加密算法 一个公钥和一个私钥,一个用于加密,另外一个用于解密。

简单的说:一对密钥公钥A和私钥B,A加密只能B解密,B加密只能A解密。

为什么需要密钥交换算法?前面我们提到对称加密算法加解密都是用同一个密钥,我们可以想一下,我们怎样能安全的把一个密钥给到对方呢?比如我们经常用到HTTPS,大家都说HTTPS加密了是安全的,那它加密的密钥怎么来的呢?很显然我们在访问一个s地址的时候,事先并没有密钥,访问过程中客户端跟服务端通过握手协议协商出来的密钥,如果服务端直接把密钥在网络上传输那肯定不安全的,所以这过程到底发生了什么?后面专门分析s的时候会详细写,这里先了解下该算法。

ECDH密钥交换算法是基于椭圆曲线加密

从上面图中可以看出,DH&ECDH密钥交换算法交互双方都会向对方公开一部分信息,即所谓的公钥,这部分即使被别人拿到了也不会威胁到最终的密钥,这里很关键的一点是甲乙两方公布的公钥是不相同的,但是最终生成的密钥两边是一致的,这里是利用的算法原理,有兴趣的可以去查阅详细的算法公式,因为最终的密钥不需要传输给对方,所以很大程度保证安全性。

非对称加密算法:

比较典型的非对称加密算法有RSA、ECC、ElGamal,RSA算法基于大数因子分解难题,而ElGamal和ECC算法则是基于离散对数难题。

数字签名算法可以看做是一种带有密钥的消息摘要算法,并且这种密钥包含了公钥和私钥。也就是说数字签名算法是非对称加密算法和消息摘要算法的结合体,遵循“私钥签名,公钥验证”的签名认证方式。

数字签名算法是公钥基础设施(Public Key Infrastructure,PKI)以及许多网络安全机制(SSL/TLS,VPN等)的基础。

数字签名算法要求能够验证数据完整性、认证数据来源,并起到抗否认的作用。

数字签名算法主要包括RSA、DSA、ECDSA共3种算法,其中RSA算法源于整数因子分解问题,DSA和ECDSA算法源于离散对数问题。

我们以蚂蚁金服开放平台上接口签名方案为例,详细说明可以打开如下文档:

公钥密码里面,如果一方用自己的私钥加密,解密用自己的公钥,公钥不是公开的吗?这样来说的话,任何人都

它满足如下特性:

公钥是公开的没有错,但是不是每个人都知道公钥,你的公钥只给你需要的人。

设m=(ce)%n则 m == M,从而完成对c的解密。

有了公钥确实可以解来密码,但是加密文件你只发给需要的人,

除非他们把文件公开,否则没有加密文件,只知道公钥没有用的。

反过来公钥加密,只有你能解开,所以如果拿公钥加密文件,你是能解开密码的人,这样很安全的。

区块链的加密技术

密码学的历史最早可以追溯到几千年以前,古今中外都有密码用的记载,从历史看,很大程度给密码学提供了应用环境,推动了密码学的发展,密码学按照发展历程,大体可以分为三个阶段,手工加密、机械加密和计算机加密阶段,下面是近代密码学的一些重要进展。

B,B用自己的私钥对信息进行解密。比特交易的加密就属于这种场景。(2)在数字签名场景中,发送方A用自己的私钥对信息进行加密并发送给B,B用A的公钥对信息进行解密,然后确保信息是由A发送的。(3)登录认证场景下,客户端用私钥加密登录信息并发送给,再用客户端的公钥解密认证登录信息。请注意上述三种加密之间的异:信息加密是公钥加密和私钥解密,确保信息的安全性;数字签名是私钥加密,公钥解密,确保了数字签名的归属。认证私钥加密,公钥解密。以比特体系为例,其非对称加密机制如图1所示:比特体系一般通过调用作体系底层的随机数生成器生成一个256位的随机数作为私钥。比特的私钥总量大,遍历所有私钥空间获取比特的私钥极其困难,所以暗码学是安全的。为便于辨认,256位二进制比特私钥将通过SHA256哈希算法和Base58进行转化,构成50个字符长的私钥,便于用户辨认和书写。比特的公钥是私钥通过Secp256k1椭圆曲线算法生成的65字节随机数。公钥可用于生成比特交易中使用的地址。生成进程是公钥先通过SHA256和RIPEMD160哈希处理,生成20字节的摘要成果(即Hash160的成果),再通过SHA256哈希算法和Base58转化,构成33个字符的比特地址。公钥生成进程是不可逆的,即私钥非对称加密算法中,目前最常用的是 RSA 算法和 ECC(椭圆曲线加密)算法。要采用非对称加密算法实现安全登录的话,首先需要在客户端向端请求登录页面时,生成公钥和私钥,然后将公钥随登录页面一起传递给客户端浏览器,当用户输入完用户名密码点击登录时,登录页面中的 JaScript 调用非对称加密算法对用户名和密码用用公钥进行加密。然后再提交到端,端利用私钥进行解密,再跟数据库中的用户名密码进行比较,如果一致,则登录成功,否则登录失败。不能从公钥推导出来。比特的公钥和私钥通常存储在比特钱包文件中,其间私钥最为重要。丢掉私钥意味着丢掉相应地址的所有比特财物。在现有的比特和区块链体系中,现已依据实践使用需求衍生出多私钥加密技能,以满意多重签名等愈加灵敏杂乱的场景。

一个RSA算法的加密运算,需要完整的演算过程。

RSA算法非常简单,概述如下:

找两素数p和q

取n=pq

取t=(p-1)(q-1)

取任何一个数e,要求满足e

取de%t==1

这样最终得到三个数: n d e

设c=(Md)%n就得到了加密后的消息c

注:表示次方,上面两式中的d和e可以互换。

在对称加密中:

n e两个数构成私钥,e自己保留,不让任何人知道。

给别人发送的信息使用e加密,只要别人能用d解开设消息为数M (M

别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

rsa的安全性在于他是2个算法而已,不是密码,把公钥加密好的一串字符发送到端后,他通过私钥把这串字符还原成你原来输入的原始数据对于一个大数n,没有有效的方法能够将其分解

求得d。

rsa简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用rsa 来对所有的信息进行加密,

最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用

RSA对刚才的加密密钥进行加密。

需要说明的是,当前小于1024位的N已经被证明是不安全的

自己使用中不要使用小于1024位的RSA,使用2048位的。

我来回答你可以闭帖了,呵呵

请问SSL加密的公钥和私钥区别

DH密钥交换算法的安全性基于有限域上的离散对数难题

公钥加密DH,全称是 Diffe-Hellman ,它的原理很简单。,私钥解密。

密钥对的所有者将公钥提供给任何人,但将私钥保密。证书验证实体是特定公钥的所有者。遵循 X.509 标准的证书包含数据部分和签名部分。

非对称加密中的公钥和私钥怎么来的

蚂蚁开放平台签名专区

这样来的:A和B,A自己做了两把钥匙,一把私钥一把公钥(公钥用于加密,私钥用于解密),A将公钥给B,B要传送信息给A,那么B用得到的公钥加密之后发送给A,A收到后用自己的私钥解密。相反,A如果要发送信息给B,那么就要先得到B自己制作的公钥。(一对公钥和私钥互为加解密,但一般都是公钥加密传输,私钥接收解密)

非对称加密的公钥和私钥是通过数学算法生成的。具体来说,非对称加密算法采用了一种基于数学问题的算法,这种算法的原理是利用一组相关的数学参数进行加密和解密作。在答:发邮件肯定会有影响,国为灰色的PGP软件不会启用,发邮件是会提示找不到公钥,需要你手动签下名,右键灰色公钥“sign”签名。这种情况一般是由于对方没有在PGP上传后验证或是PGP软件的bug.这种算法中,公钥和私钥是一对密钥,它们是通过一种特殊的数学算法生成的。公钥是公开的,任何人都可以获得。私钥则是保密的,只有密钥持有者才能访问它。生成公钥和私钥的算法通常基于数学问题的难解性,例如质因数分解问题或离散对数问题。这些问题是难以在有限时间内解决的,因此就可以用它们来保证加密的安全性。在生成公钥和私钥的过程中,一般会生成两个较大的质数p和q,然后使用它们来计算得到公钥和私钥。这些计算包括了一些特定的算法和参数,使得公钥可以用来加密信息,但无法用来解密信息,只有对应的私钥才能进行解密作。总之,非对称加密算法生成公钥和私钥的过程涉及到复杂的数算和算法,这些密钥对的建立是保证加密安全性的基础。

非对称加密算法的优点有哪些?

数字加密技能是区块链技能使用和开展的关键。一旦加密办法被,区块链的数据安全性将受到挑战,区块链的可篡改性将不复存在。加密算法分为对称加密算法和非对称加密算法。区块链首要使用非对称加密算法。非对称加密算法中的公钥暗码体制依据其所依据的问题一般分为三类:大整数分化问题、离散对数问题和椭圆曲线问题。,引进区块链加密技能加密算法一般分为对称加密和非对称加密。非对称加密是指集成到区块链中以满意安全要求和所有权验证要求的加密技能。非对称加密通常在加密和解密进程中使用两个非对称暗码,称为公钥和私钥。非对称密钥对有两个特点:一是其间一个密钥(公钥或私钥)加密信息后,只能解密另一个对应的密钥。第二,公钥可以向别人揭露,而私钥是保密的,别人无法通过公钥计算出相应的私钥。非对称加密一般分为三种首要类型:大整数分化问题、离散对数问题和椭圆曲线问题。大整数分化的问题类是指用两个大素数的乘积作为加密数。由于素数的出现是没有规律的,所以只能通过不断的试算来寻找解决办法。离散对数问题类是指基于离散对数的困难性和强单向哈希函数的一种非对称分布式加密算法。椭圆曲线是指使用平面椭圆曲线来计算一组非对称的特殊值,比特就采用了这种加密算法。非对称加密技能在区块链的使用场景首要包含信息加密、数字签名和登录认证。(1)在信息加密场景中,发送方(记为A)用接收方(记为B)的公钥对信息进行加密后发送给

非对称加密算法的优点如下:安全性高。

2.发送到的公钥是跟邮箱挂钩的,那也就可以直接攻击邮箱后,重新制作公钥,用制作公钥发送到替换原本公钥,这样就可以冒充原公钥,用新私钥解密。这就不安全了啊。

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

扩展资料:

主要应用:

非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。

设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A的公钥验证签名,确认后用自己的私钥解密消息。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。

参考资料来源:

关于RSA中公钥和私钥的具体使用情况区分

非对称加密算法源于DH算法(Diffie-Hellman,密钥交换算2、私钥加密公钥解密场景:法)由W.Diffie和 M.Hellman共同提出,该算法为非对称加密算法奠定了基础,下面我们先来了解下密钥交换算法DH和ECDH算法。

公钥和私钥在一些银行系统、第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区分两者的区别。

RSA公钥和私钥是什么?

首先来说,RSA是一种非对称加密算法,它是由三位数学家(Rivest、Sha、Adleman)设计出来的。非对称加密是相对于对称加密而言的。对称加密算法是指加密解密使用的是同一个秘钥,而非对称加密是由两个密钥(公钥、私钥)来进行加密解密的,由此可见非对称加密安全性更高。

公钥顾名思义就是公开的密钥会发放给多个持有人,而私钥是私有密码往往只有一个持有人。

公私钥特性

公钥和私钥都可用于加密和解密

公钥和私钥都可以用于加解密作,用公钥加密的数据只能由对应的私钥解密,反之亦然。虽说两者都可用于加密,但是不同场景使用不同的密钥来加密,规则如下:

1、私钥用于签名、公钥用于验签

签名和加密作用不同,签名并不是为了保密,而是为了保证这个签名是由特定的某个人签名的,而不是被其它人伪造的签名,所以私钥的私有性就适合用在签名用途上。

私钥签名后,只能由对应的公钥解密,公钥又是公开的(很多人可持有),所以这些人拿着公钥来解密,解密成功后就能判断出是持有私钥的人做的签名,验证了身份合法性。

2、公钥用于加密、私钥用于解密,这才能起到加密作用

公钥密码体制和私钥密码体制各有什么优缺点?

KeyPair key = keyGen.generateKeyPair();

优点:密钥的分发简单回答下就是相对容易;密钥管理简单;可以有效地实现数字签名。

缺点:与对称密码体制相比,非对称密码体制加解密速度比较慢;同等安全强度下,非对称密码体制要求的密钥位数要多一些;密文的长度往往大于明文长度。