首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开发过程中你都用到了哪些数据加密算法

文章前导

摘要算法

1.什么是摘要算法

常用的摘要算法有MD5,SHA1。摘要算法是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,一般结果使用16进制进行显示。

2.MD5和SHA1的区别

MD5结果是128位摘要,SHa1是160位摘要。那么MD5的速度更快,而SHA1的强度更高。

3.代码示例

4.是否可以解密

摘要算法加密后的数据是无法解密的,平常我们所说的解密其实是通过撞库达到解密的效果。所谓的撞库就是,我们实现有一个加密后的数据,我们将多个加密后的数据称为数据池,现在我们手里有一个明文数据,我们通过将明文加密后去数据池中的数据进行一个一个的匹配,如果匹配到了,证明数据池的该数据在加密之前就是我们手里的明文,通过这种方式来解密。

5.如何加强安全强度

在第4点中,我们知道我们加密的数据可能被破解,那有什么方法可以减少这种情况的发生呢?在程序开发中,可以给密码加盐、设置密码的复杂度(由字母、数字、_以及一些特殊字符组成)。

对称加密算法

1.什么是对称加密算法

[引用百度]数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

[个人理解]所谓的对称加密,可以这样简单的理解。在加密的过程中有这样几个变量,一个是加密的内容,二是加密的方式,三是加密的密钥。我们发送方通过加密的方式和加密的密钥对加密的内容进行加密,发送给接收方,接收方在接受到数据之后,需要使用发送方相同的加密方式和加密密钥进行解密才可以将数据进行解密。下图是示例图

(图片来自百度,如侵权,请联系删除资源)

2.常用的对称加密方式有哪些

常用的对称加密算法有:AES和DES。DES:比较老的算法,一共有三个参数入口(原文,密钥,加密模式)。而3DES只是DES的一种模式,是以DES为基础更安全的变形,对数据进行了三次加密,也是被指定为AES的过渡算法。AES:高级加密标准,新一代标准,加密速度更快,安全性更高(不用说优先选择)

3.代码示例

输出的结果依次是:

非对称加密算法

1.什么是非对称加密算法

[引用百度]非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。下图是示例图

(图片来自百度,如侵权,请联系删除资源)

2.工作原理

1.A要向B发送信息,A和B都要产生一对用于加密的公钥和私钥。

2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。

3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。

4.A将这个消息发给B(已经用B的公钥加密消息)。

5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。

3.代码示例

输出结果(下面所看到的特殊符号不是所谓的乱码,而是加密之后的字符串,加密后的内容不是一成不变的,我们每请求一次,所看到的加密内容是不一样的,但是不会影响到我们解密)

非对称加密与对称加密区别

1.对称加密比非对称加密执行更快。因为对称加密使用的是相对更具复杂的算法,因此在数据加密的过程中消耗的时间更长,导致效率更低。尤其是针对数据量大的情况下。

2.对称加密比非对称加密的安全性相对低一些。由于对称加密的算法复杂度更高,因此在密码强度来说,必然是更高的。

3.对称加密中,在解密方需要解密时,需要知道加密方所用的加密方式以及加密的密钥。

4.非对称加密时,接收方只需要知道加密方的公钥即可。

5.在实际过程中,非对称加密并不是绝对安全的。例如中间人攻击,所谓的中间攻击就是,恶意攻击人,在发送方将公钥发给接收方的过程中将公钥进行拦截,将传输的公钥替换为自己的公钥,当接收方接收到公钥之后,对数据进行加密,发给接收方,恶意攻击人接受到该加密后的数据,利用自己的密钥就可以恶意的窃取数据。针对这种情况,我们尽可能的使用加密的https传输协议。如下示例图

如何选择加密方式

1.根据不同的业务场景,当我们需要密码强度高的情况下,可以选择非对称加密或者对称机密,当然是非对称加密更可靠。

2.执行效率,上面我们也提及到非对称加密比对称机密的执行效率更低,如果愿意选择通过效率来换安全可以选择对称加密,当然也不是说对称加密不好。

3.在实际的加密过程,尽可能的增加我们的密码复杂度,同时定期更换密码等操作也是一个加强数据安全的方式。

4.选择一些可靠的安全函数。例如PHP的mcryptencrypt()、mcryptdecrypt()加密方式已经存在被破解的安全隐患并且PHP官方也不建议使用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190828A0M4CE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券