加密方式(包括MD5 base64 对称加密 非对称加密简介)

加密方式

MD5

MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”效果:对输入信息生成唯一的128位散列值(32个字符
1.MD5的特点
不可逆
1.对不同的数据进行加密,得到的结果是定长的,MD5对不同的数据进行加密,得到的结果都是32个字符。
2.根据输出值,不能得到原始的明文,即其过程不可逆。
3.算法具有较好的安全性,而且免费。
4.广泛使用主要运用在数字签名、文件完整性验证以及口令加密等方面
2.用途
1.口令加密
2.搜索:将几个关键字分别md5,在搜索这几个关键字的时候,不管顺序怎么样,还是会得到大致相同的搜素结果。其实就是将这几个关键字的md5值作一些特殊处理,比如相加。
3.版权: 不同的数据 MD5 是不一样的,比如一个视频资源,放到服务器上的时候,会将md5值也放上去保存。如果是盗版的,md5值是不一样的。
4.不止这些用途。
3.破解
虽然说MD5加密本身是不可逆的,但并不是不可破译的,网上有关MD5解密的网站很多,破解机制采用穷举法,也就是把所有可能结果进行一个一个检验。(穷试,撞库)
4.如何更加安全
1.加盐(salt)
在明文的固定位置插入随机串,然后再进行MD5,
如果盐是固定的,盐有很多人知道(服务器,前端,客户端),会被泄漏,不安全.
2.对字符串多次MD5加密
3.先加密,后乱序
4.HMAC
安全级别更高,破解难度高。
但还是有风险:每次结果一致,有可能被暴力破解。
黑客模拟网络请求,不需要真实密码,也可以获取登陆权限。
5.生成带时间戳的密码
客户端注册时输入账号和原始密码,服务器会返回一个key给客户端
服务器将账号,key,以及hmac后的密码(EncryptPass)保存在数据库
客户端拿到key后,会将原始密码结合key进行一次hmac运算,生成一个加密后的密码(EncryptPass),加密后的密码再结合当前时间(这个时间要从服务器获取)再做一次md5,生成新的加密密码(finalPass)
客户端结合时间生产密码后,会发送请求和服务器上的密码作比较(服务器会用EncryptPass结合服务器当前时间,或者当前时间前一分钟,生产服务器的finalPass,如果这两个时间相同,就登陆成功)
这样根据时间来做,就算暴力破解或者模拟登陆,已经过了时效了,密码早已经变了。

Base64
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其实Base64只能算是一个编码算法,对数据内容进行编码来适合传输。
标准Base64编码解码无需额外信息即完全可逆,即使你自己自定义字符集设计一种类Base64的编码方式用于数据加密,在多数场景下也较容易破解。
Base64编码本质上是一种将二进制数据转成文本数据的方案。对于非二进制数据,是先将其转换成二进制形式,然后每连续6比特(2的6次方=64)计算其十进制值,根据该值在A--Z,a--z,0--9,+,/ 这64个字符中找到对应的字符,最终得到一个文本字符串。

1.标准Base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
2.Base64是把3个字节变成4个可打印字符,所以Base64编码后的字符串一定能被4整除(不算用作后缀的等号);
3.等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,Base64要在后面添加\0凑齐3n位。为了正确还原,添加了几个\0就加上几个等号。显然添加等号的数目只能是0、1或2;
4.严格来说Base64不能算是一种加密,只能说是编码转换。

对称加密

对称加密有两种加密方式: ECB和CBC
1.介绍
加密和解密使用同一个"密钥",密钥的保密工作就非常的重要,密钥会定期更换
2.经典算法
DES 数据加密标准(用的比较少,因为强度不够)。
3DES 使用3个密钥,对相同的数据执行三次加密,强度增强。
AES 高级加密标准,钥匙串访问就是使用AES加密)
3.ECB: 电子代码本
就是将一个数据拆分为多块,然后独立加密
4.CBC: 密码块链
使用一个密钥和一个初始化"向量"对数据执行加密转换,能保证密文的完整性,如果一个数据发生改变,后面所有的数据将会被破坏
向量:某个方向的数量.
现代的密码学都和几何有关!因为几何(包含圆形\椭圆\球体)的变量是有规律的,但是结果是多变的

非对称加密(RSA)
典型的如RSA,AES等,常见方法,使用openssl ,keytools等工具生成一对公私钥对,使用被公钥加密的数据可以使用私钥来解密,反之亦然(被私钥加密的数据也可以被公钥解密) 。在实际使用中私钥一般保存在发布者手中,是私有的不对外公开的,只将公钥对外公布,就能实现只有私钥的持有者才能将数据解密的方法。   
这种加密方式安全系数很高,因为它不用将解密的密钥进行传递,从而没有密钥在传递过程中被截获的风险,而破解密文几乎又是不可能的,但是算法的效率低,所以常用于很重要数据的加密,常和对称配合使用,使用非对称加密的密钥去加密对称加密的密钥。

1.RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。
RSA的安全性依赖于大数分解,小于1024位的N已经被证明是不安全的,而且由于RSA算法进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,这是RSA最大的缺陷,因此通常只能用于加密少量数据或者加密密钥,但RSA仍然不失为一种高强度的算法。

欢迎大家指正与讨论。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值