应用加密一;非对称加密算法揭秘

非对称加密算法

  使用过程:

  乙方生成两把密钥(公钥和私钥)

甲方获取乙方的公钥,然后用它对信息加密。

  乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串

  甲方获取乙方私钥加密数据,用公钥解密

  优点:

  更安全,密钥越长,它就越难破解

  缺点:

  加密速度慢

  常用算法:

  RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)

  非对称加密方法

  1公钥私钥的使用原则

  ①每一个公钥都对应一个私钥。

②密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

③如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

  ④如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

  非对称密钥密码的主要应用就是公钥加密和公钥认证。

  2公钥加密、解密

  加密的目的,是不希望第三者看到当前两个通讯用户的通讯内容。

  2.1加密

  A(客户)想给B(服务器)发送一段文字,但是不想让别人看到,因此想使用非对称加密方法来加密这段文字,当然,B需要有一对公钥和私钥:

  ① B将他的公钥发送给A

  ② A用B给他的公钥加密这段文字,然后传给B

  ③ B用他的私钥解密A发过来的消息,这里要强调的是,只要B的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

  通过这几步,B就能成功收到A发送的信息,同时又达到了保密的目的。

  2.2解密

  如果B想给A回信息,就简单的多了:

  ① B将要回复的信息通过自己的私钥加密,然后传送给A

  ② A用B之前给他的公钥解出这份信息。

  3、公钥认证

  在公钥加密、解密里面描述的通讯过程看似简单,但想想这个问题:在过程2中,A怎么B给他的回信在传递过程中,有没有被人修改?这就涉及到数字签名的概念。

  3.1数字签名(digital signature)

  微软官方给出的定义:“数字签名”是指可以添加到文件的电子安全标记。使用它可以验证文件的发行者以及帮助验证文件自被数字签名后是否发生更改。

  3.1.1数字签名原理

  要达到这个目的,一般是对信息做一个hash计算得到一个hash值,注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后做为一个签名和信息一起发出去。 接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改hash值,从而让它们可以相匹配,为了防止这种情况,hash值一般都会加密后(也就是签名)再和信息一起发送。

  3.1.2数字签名使用方式

  下面通过例子来说明这个过程:

  B给A回信时,采用了数字签名的方式

  1、B先用hash函数,生成信件的摘要(digest)

  2、B使用自己的私钥,对这个摘要加密,这样就生成了数字签名(signature)

  3、B将这个签名附在要回复的信息后面,一起发给A

  4、A收到B的信息后,取下数字签名,并通过B的公钥解密,得到信件的摘要信息

  5、A在对B发送的信息本身使用B指定的hash函数,将得到的结果同上一步解密得到的摘要进行对比,如果两者一致,就说明B发过来的信息未被修改过。

3.2数字证书(Digital CerTIficate)

  问题就这样结束了吗?远没有,试想,虽然A确定了B回给他的信息是未修改过的,但是怎么确定给他回信息的就是B?如果有不怀好意的C把A保存的B的公钥偷偷换成自己的,并冒用B的名义给A发信息呢?

  要解决这个问题,A只要能确定自己持有的公钥到底是不是B的就行了,这就需要用到数字证书。

  数字证书是用来验证公钥所属的用户身份。在日常生活中,如果我们要验证一个人的身份,通常的做法是查看他的×××。我们信任×××颁发机构即政府机构的公信力,因此只要验证一个人的×××不是伪造的,我们就相信这个人的身份和×××上所描述的是一致的。

数字证书就是一个人或者组织在网络世界中的×××,其发证机关是证书管理机构(cerTIficate authority,CA)。CA用自己的私钥对用户的身份信息(主要是用户名和该用户的公钥)进行签名,该签名和用户的身份信息一起就形成了证书。

  3.2.1数字证书的构成

  证书的发布机构(Issuer)

指出是什么机构发布的这个证书,也就是指明这个证书是哪个证书中心(cerTIficate authority,简称CA)发布的的(只是创建证书,不是指证书的使用者)。

  证书的有效期(Valid from , Valid to)

  也就是证书的有效时间,或者说证书的使用期限。 过了有效期限,证书就会作废,不能使用了。

  公钥 (Public key)

  这个我们在前面介绍公钥密码体制时介绍过,公钥是用来对消息进行加密解密的,是很长的一串数字。

  证书所有者(Subject)

  这个证书是发布给谁的,或者说证书的所有者,一般是某个人或者某个公司名称、机构的名称、公司网站的网址等。

  签名所使用的算法 (Signature algorithm)

  指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名

  指纹以及指纹算法 (Thumbprint, Thumbprint algorithm)

  这个是用来保证证书的完整性的,也就是说确保证书没有被修改过。 其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。

原文地址:http://blog.51cto.com/14048760/2312299

时间: 2024-08-29 19:17:20

应用加密一;非对称加密算法揭秘的相关文章

最全加密算法之对称加密和非对称加密

常见加密算法 : DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合: 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高: RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快: IDEA(International Data Encryption Algorithm)国际数据加密算法:使用 128 位密钥提供非常强的安全性: RSA:由 RSA 公司发明,是一个支持变长密钥的公共

Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

[前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及用法和样例 [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao.正确应该是miyue,可是大家都读miyao) 2.简单的样例 将123456每位数字都加1后得到234567, 当中123456就是明文.234567就是密文.加密密钥就是1,加密算法是每位加 3.对称加密和非对称加密 以上为例. 123456-->234567的加密

数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)

数字签名是什么? 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把. 3. 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果. 4. 鲍勃收信后,用私钥解密,看到信件内容. 5. 鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest). 6. 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature). 7. 鲍勃将这个签名,附在信件下面,一起发给苏珊. 8. 苏珊收信后,取下数

几种加密算法的测试,包括对称加密和非对称加密

Blowfish 加密解密 Blowfish 加密算法介绍:BlowFish是对称加密算法的其中一种,加密后的数据是可逆的.由于BlowFish加密/解密速度快,更重要的是任何人都可以免费使用不需要缴纳版权费,所以有不少游戏都采用BlowFish加密资源文件数据.BlowFish 每次只能加密和解密8字节数据,加密和解密的过程基本上由ADD和XOR指令运算组成,所以速度非常快. Blowfish 加密算法实现 1 /** 2 * Blowfish加密 3 * 4 * @param text 需要

Java加密技术(四)非对称加密算法RSA

RSA  这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman. 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥.相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了.RSA同时有两把钥匙,公钥与私钥.同时支持数字签名.数字签名的意义在于,对传输过来的数据进行校验.确保数据在传输工程中不被修改. 流程分析: 甲方构建

SSH加密原理、RSA非对称加密算法学习与理解

首先声明一下,这里所说的SSH,并不是Java传统的三大框架,而是一种建立在应用层和传输层基础上的安全外壳协议,熟悉Linux的朋友经常使用到一 个SSH Secure Shell Cilent的工具,本文也是基于此工具加密原理的学习,在SSH的加密原理中,使用到了RSA非对称加密算法,本文也一并做了学习和了解. 非对称加密算法 在日常的工作生产中, 我们经常需要进行数据的通讯,开发人员经常需要对数据进行加解密操作,以保证数据的安全.数据的加密算法非为对称加密和非对称加密两种,常用的DES.三

加密算法:对称加密和非对称加密

对称加密算法 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 对称加密算法的优点是算法公开.计算量小.加密速度快.加密效率高. 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥.其次如果一方的秘钥被泄露,那么加密信息也就不安全了.另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收.发双方所拥有的钥匙数量巨大,密钥管理成为双方的负

非对称加密算法

介绍 非对称加密算法需要两个密钥:公开密钥(publickey) 和 私有密钥(privatekey) 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密 特点 算法强度复杂.安全性依赖于算法与密钥 加密解密速度慢 与对称加密算法的对比 对称加密只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥 非对称密钥体制有两种密钥,其中一个是公开的 RSA 算法原理 找出两个“很大”的质数:P & Q

https 结合使用 对称加密和非对称加密

(一)对称加密(Symmetric Cryptography) ---共享密钥加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中.对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用