加解密和编码

简介

加密就是对重要的东西进行保护,当别人在获取到你的信息或者东西后,解密所需要的代价高于解密后得到东西的价值时,这种加密就是成功的。

分类

对称加密

密钥和加密算法对数据进行转换得到密文,使用同样的密钥加上解密算法再对数据进行一次转换得到原文。

目前主要有两种对称加密算法:DES和AES,目前用的多的是AES,因为破解对称加密的方式是暴力破解,也就是穷举,首先需要想办法拿到一个密文和原文,然后用不同的密钥去解密文,如果能够得到原文就代表解密成功。随着计算机的发展,计算能力的不断提升,密钥较短的DES很容易被破解出,因此已经被淘汰,现在用的都是AES,但是随着计算机算力的增加以后AES也会被淘汰,会有更长密钥的算法来替代它。

优点:加密速度快、加密效率高
缺点:不能在不安全的网络上传输密钥,一旦密钥泄漏则加密通信失效

非对称加密

非对称加密就可以在不安全的网络上传输公钥,因为接收方有两把特殊的钥匙,一把给发送方,发送方使用接收到的这把钥匙对数据进行转换后发送给接收方,接收方使用另一把钥匙对数据再进行一次同样的转换(即同样的加密算法)就能得到原文。给发送方的那把钥匙叫公钥,自己留着的叫私钥,在传输中即使别人得到了公钥和密文,没有私钥也无法解密。

那么是如何做到用不同的钥匙使用同样的算法能够得到密文和明文呢?这边用一个极其简单的例子描述这两把特殊的钥匙,有一个原文4,规定是十进制遇10即溢出(非对称加密必须要有溢出,否则无法实现),接收方有一把钥匙是+7,由上面的规定10即溢出计算出另一把钥匙是+3。那么发送方使用这把计算出的钥匙+3,对原文4加密后得到密文7,接收方用自己原有的钥匙+7对密文7转换就可以得到原文4。

此外公钥是可以解密钥转换后的数据,也就是如果先用+7对4加密得到1,再用+3对密文转换还是能够得到原文4,但是不能将原有的钥匙+7也就是密钥给发送方,注意上面说的,另一把钥匙公钥3是根据密钥计算出来的,如果把密钥给发送方,公钥保存在本地,一旦别人拿到私钥,就有可能得到2把钥匙。

非对称加密有几个使用场景:

  1. 加密和解密:公钥加密传输数据,私钥解密得到数据

  2. 签名和验证:使用私钥加密,再用公钥解密,如果解出,就证明是这个私钥生成的,验证的时候是需要提供原文和密文。

  3. 加密和签名:发送方使用接收方给的公钥加密发送数据得到密文,再用自己的私钥对发送数据的Hasp值转换(直接转换原数据会很大很大,如果使用数据的hash值就会变得很小,这样无论原数据多大,签名文件一定是很小的)得到签名文件,然后附加在原生数据后面作为签名。接收方使用发送方给的公钥解签名文件,再用自己的私钥解密文,这样验证后就能确认不是其他发送方发来的消息,防止其他人拿到发送方和接收方的两个公钥后乱发消息。

非对称加密经典算法主要有两个:RSA和DSA,其中DSA仅仅用于签名,但是它的速度快,而RSA可以用于加密和签名。

优点:可以在不安全网络上传输
缺点:计算复杂,性能比对称加密差很多

对称加密和非对称加密破解方法

优秀加密算法的标准是让破解者找不到比穷举法更有效的破解手段,并且穷举法的破解时间足够长,目前流行的经典算法都是只能用穷举法来破解。
对称加密破解:需要一对原文和密文,然后不断尝试自己的新密钥是否可以将得到的原文密文对进行加密和解密
非对称加密破解:不需要原文密文,有公钥即可然后不断尝试新私钥是否和公钥互相可解。

编码

编码除了熟悉的ascii、gbk等编码表以外还有其他一些编码形式。

Base64

Base64不是加密算法,它只是一种编码方式,是一个将二进制数据转换成由64个字符组成的字符串的编码算法。
这边说的二进制数据不是一般看到的0101,比如计算机显示一张图片,这张图片不是文本,无法将他像文本那样对照ASIICA码转成二进制然后传给其他人,但是只要是计算机显示的东西,必然是一个二进制,直接传二进制很大,这时可以用Base64对照表,将它转成文本后再传。
在这里插入图片描述

编码示例:
在这里插入图片描述

由此可以看出Base64的算法:将原数据每6位对应成Base64索引表中的一个字符,如果不足6位就补0用=代替。

用途:

  1. 非字符串转成字符串,让原数据具有字符串所具有的的特性,如可以放在URL中传输,可以保存到文本文件、可以通过普通的聊天软件进行文本传输
  2. 简单加密字符串,但是不能用作加密,主要还是用途1用作数
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值