探秘加密算法

2020-01-02 23:02:16 浏览数 (1)

前言

应工信部关于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值字典,然后反向查找达到破解目的,因此建议使用强密码。

文章参考

https://juejin.im/post/5b48b0d7e51d4519962ea383#heading-17 https://www.jianshu.com/p/ce3893a7be09

0 人点赞