专栏首页搜狗测试探秘加密算法

探秘加密算法

前言

应工信部关于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

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:zhonglv

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 常见加密算法之单向加密

    在接口测试过程中,常常会遇到加密算法,今天主要说说一下单向散列加密的4种算法。

    用户5521279
  • 常见加密算法解析-2

    DES是对称性加密里常见的一种,全程是Data Encryption Standard,即数据加密标准,是一种使用秘钥加密的块算法。秘钥长度是64位(bit),...

    用户5521279
  • 记录一次接口评测的优化

    我们在测试过程中往往使用不同的方式评估产品的质量,这些方法种类繁多,从简单的缺陷计数到严格的统计建模不一而足。当我们的功能涉及到过量或者无法穷尽的数据时,我们需...

    用户5521279
  • 数据库专题(一) ——数据库优化

    数据库专题(一) ——数据库优化 (原创内容,转载请注明来源,谢谢) 一、概述 数据库的优化通常分为三个方面:数据库DML、DQL的优化(即增删改查等SQL语...

    用户1327360
  • 寻找2018年下一个大型加密货币的技巧

    想跳入数字货币的世界?加密货币是未来的浪潮,而且已经有700多种在网络空间中流通,你知道一定有一些事情正在发生。

    捞得一比
  • 2017年区块链十大风云人物与五大事件!

    2017年对区块链意义重大 越来越多的行业被渐渐被区块链颠覆 那么和币兽来看一下 2017年区块链的十大人物与事件都有哪些 ? 1.日本正在对加密货币投资者资产...

    企鹅号小编
  • Java底层知识总结-0

    并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行多个线程将交替的换出或者换入内存,这些线程是同时存在的。每个线程都会处于执行过程中的某个状态,如果运行...

    用户2032165
  • MySQL 性能优化技巧

    最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 ...

    lyb-geek
  • 使用face-api.js实现人脸识别(一)

      Face-api.js 是一个 JavaScript API,是基于 tensorflow.js 核心 API 的人脸检测和人脸识别的浏览器实现。它实现了一...

    阿新
  • 新纪元的曙光:金融科技时代的新金融往哪儿走?

    孟永辉

扫码关注云+社区

领取腾讯云代金券