加密解密学习笔记

加密解密学习笔记

 

基础知识

公钥密码体制(public-key cryptography)

公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。

解密:通过解密算法和私钥对密文进行解密,得到明文。

注意,由公钥加密的内容,只能由私钥进行解密,也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能解密。在实际的使用中,有需要的人会生成一对公钥和私钥,把公钥发布出去给别人使用,自己保留私钥。

对称加密算法(symmetric key algorithms)

在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。这个和上面的公钥密码体制有所不同,公钥密码体制中加密是用公钥,解密使用私钥,而对称加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。        

密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。

 

非对称加密算法(asymmetric key algorithms)

在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。前面所说的公钥密码体制就是一种非对称加密算法,他的公钥和是私钥是不能相同的。这里的“非对称”就是指加密使用的密钥和解密使用的密钥不同。RSA密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。 由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。

加密和签名

我们说加密,是指对某个内容加密,加密后的内容还可以通过解密进行还原。 比如我们把一封邮件进行加密,加密后的内容在网络上进行传输,接收者在收到后,通过解密可以还原邮件的真实内容。

签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做一个hash计算得到一个hash值(称为数字摘要),注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值(数字摘要)加密(以保证不被修改)作为一个签名,和信息一起发出去。 接收方在收到信息后,会重新计算信息的hash值,并将信息所附带签名解密得到一个值,对比这两个值,如果一致,就说明信息的内容没有被修改过。不同的明文的hash值(数字摘要)不同,相同的明文的hash值(数字摘要)肯定相同。

数字证书

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,它是由权威机构——CA(Certificate Authority 认证中心,认证授权,证书颁发机构)发行的,CA作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任,人们可以在网上用之来识别对方的身份。

证书的格式遵循ITUT X.509国际标准。一般包括公开密钥、名称,证书授权中心的数字签名,有效日期等:

Issuer : SecureTrust CA

Subject : ABC Company

Valid from : 某个日期

Valid to: 某个日期P

ublic Key : 一串很长的数字……

数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject,表明这个证书是发布给谁的)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。

数字证书绑定了公钥及其持有者的真实身份,是含有证书持有者身份信息并经过认证中心审核签发的电子数据(128位的身份码)。

数字证书颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书各不相同。

证书,私钥如何保护

数字证书可以在网上公开,并不怕别人盗用和篡改。因为证书的盗用者在没有掌握相应的私钥的情况下,盗用别人的证书既不能完成加密通信,又不能实现数字签名,没有任何实际用处。而且,由于有CA对证书内容进行了数字签名,在网上公开的证书也不怕黑客篡改。我们说,更该得到保护的是储存在介质中的私钥。如果黑客同时盗走了证书和私钥,危险就会降临。

 

RSA加密算法简介

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。

RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用加密密钥进行加密、解密密钥进行解密。加密密钥(即公开密钥)是公开信息,而解密密钥(即秘密密钥)是需要保密的。

 

怎么应用RSA来加密和解密信息呢?步骤如下:

 

公钥和私钥的生成

举个简单的例子

至此为止,我们有了公钥和私钥 ,就可以对原文开始加密和解密了,假设原文M=6, Alice和Bob要在网上进行加密通信:

 

加密

 

解密

 

为什么RSA可以保证密文不被破解?

可是对极大整数做因数分解的难度决定了RSA算法的可靠性。理论上,只要n=pq的长度足够长,用RSA加密的信息实际上是不能被解破的。

 

RSA涉及到数论基础https://wmathor.com/index.php/archives/1143/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值