探秘加密算法

发表于:2019-12-30 11:31  作者:zhonglv   来源:搜狗测试

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: **算法

  前言
  应工信部关于APP数据安全的要求,项目中涉及到用户个人隐私的信息如手机号码、验证码、用户userID等都在信息传输和本地存储时都需要进行加密处理。
  信息加密是前后端开发都经常需要使用到的技术,应用场景涉及用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的加密算法。
  下面小编给大家分享一些常见的加密算法。
  加密算法介绍
  加密和解密
  数据加密的基本过程,就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”。通过这样的途径,来达到保护数据不被非法人窃取、阅读的目的。
  加密的逆过程为解密,即将该编码信息转化为其原来数据的过程。
  加密算法应用
  在数据安全领域,利用加密算法来对通信的过程进行加密是一种常见的手段。利用该手段能够保障数据安全通信的三个目标:
  1)数据的保密性,防止用户的数据被窃取或泄露;
  2)保证数据的完整性,防止用户传输的数据被篡改;
  3)通信双方的身份确认,确保数据来源与合法的用户;
  常见加密算法
  加密算法分类
  根据加密结果是否可以被解密,算法可以分为可逆加密和不可逆加密(单向加密),从这个意义上来说,单向加密只能称之为加密算法而不是加解密算法。对于可逆加密,又可以根据密钥的的对称性分为对称加密和非对称加密。
  因此,常见的加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同。
  下面对这三类加密算法分别进行介绍。
  1. 对称加密
  对称加密算法介绍
  对称加密算法,又称为共享密钥加密算法。在对称加密算法中,使用的密钥只有一个,发送和接收双方都使用这个密钥对数据进行加密和解密。这就要求加密和解密方事先都必须知道加密的密钥。
  常见的对称加密算法
  DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。
  3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。
  AES:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。
  1)AES/DES/3DES算法
  AES、DES、3DES 都是对称的块加密算法,加解密的过程是可逆的。
  DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。
  DES加密算法是对密钥进行保密而公开算法(包括加密和解密算法)。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为2 ^ 56 次。
  2)3DES算法
  3DES算法是基于DES 的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高。
  3)AES算法
  AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128 位、192 位、256 位,分组长度128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准。
  AES 本身就是为了取代DES的,AES具有更好的安全性、效率和灵活性。
  对称算法特点
  密钥管理:比较难,不适合互联网,一般用于内部系统;
  安全性:中;
  加密速度:快好几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特数据),适合大数据量的加解密处理
  2. 非对称加密
  非对称加密算法介绍
  非对称加密算法,又称为公开密钥加密算法。它需要两个密钥,一个称为公开密钥 (public key),即公钥,另一个称为私有密钥 (private key),即私钥。因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。
  公钥和私钥是成对存在,如果使用公钥对数据进行加密,只有用对应的私钥才能进行解密。如果使用私钥对数据 进行加密,只有用对应的公钥才能进行解密。
  举个例子,甲方生成一对密钥并将其中的一把作为公钥向其它人公开,得到该公钥的 乙方使用该密钥对机密信息 进行加密后再发送给甲方,甲方再使用自己保存的另一把专用密钥 (私钥),对加密后的信息进行解密。
  常见的非对称加密算法
  常见的非对称加密算法有RSA、DSA、ECC 等。
  1)RSA算法
  RSA 加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
  RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行 因式分解却极其困难,因此可以将乘积公开作为加密密钥。
  2)ECC算法
  ECC 也是一种非对称加密算法,主要优势是在某些情况下,它比其他的方法使用更小的密钥,比如RSA加密算法,提供相当的或更高等级的安全级别。不过一个缺点是加密和解密操作的实现比其他机制时间长 (相比 RSA算法,该算法对CPU消耗严重)。
  非对称算法特点
  密钥管理:密钥容易管理;
  安全性:高;
  加密速度:比较慢,适合小数据量加解密或数据签名;
  3. 单向加密
  单向加密算法介绍
  单向加密的结果是不可以被解密的,因此,单向加密的主要用途并不是传统意义上的加解密工作,而是用于提取数据指纹,验证数据的完整性。
  发送者将要传输的数据通过单向加密算法进行一次单向加密,得到数据指纹。当接收方收到数据之后,使用相同的单向加密算法也进行一次单向加密,如果得到的数据指纹相同,则可以认为数据在传输过程中没有损坏。若不一致,说明传输过程中数据丢失了。
  单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。
  常见的单向加密算法
  常见的算法包括:MD5、SHA1、SHA224等。
  1)MD5算法
  MD5 用的是 哈希函数,它的典型应用是对一段信息产生信息摘要,以 防止被篡改。严格来说,MD5 不是一种加密算法而是摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。
  2)SHA1算法
  SHA1 是和 MD5 一样流行的消息摘要算法,然而SHA1比MD5的安全性更强。对于长度小于2 ^ 64位的消息,SHA1会产生一个160 位的消息摘要。基于MD5、SHA1 的信息摘要特性以及不可逆 (一般而言),可以被应用在检查文件完整性以及数字签名等场景。
  MD5和SHA1的区别:MD5结果是128位摘要,SHa1是160位摘要。那么MD5的速度更快,而SHA1的强度更高。
  单向加密算法应用
  以MD5为例进行说明,主要用途有:验证消息完整性,安全访问认证,数据签名。
  消息完整性:由于每一份数据生成的MD5值不一样,因此发送数据时可以将数据和其MD5值一起发送,然后就可以用MD5验证数据是否丢失、修改。
  安全访问认证:这是使用了算法的不可逆性质,(就是无法从MD5值中恢复原数据)对账号登陆的密码进行MD5运算然后保存,这样可以保证除了用户之外,即使数据库管理人员都无法得知用户的密码。
  数字签名:这是结合非对称加密算法和CA证书的一种使用场景。
  一般破解方法:字典法,就是将常用密码生成MD5值字典,然后反向查找达到破解目的,因此建议使用强密码。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理

【福利】填问卷送精选测试礼包+接口测试课程!为测试行业做点事!

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2020, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道