当前位置: 首页 > news >正文

常用加密算法概述

转载自:https://www.cnblogs.com/colife/p/5566789.html

常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。

加密算法分类

1.对称加密

指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。

常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES

2.非对称加密

指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。

常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

4.Hash算法

Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。

加密算法类型应用原则

前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种类型比较好呢,我们应该根据自己的使用特点来确定选型。

  • 由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。

  • 对称加密算法不能实现签名,因此签名只能非对称算法。

  • 由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

  • 在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

  • 如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

常见加密算法介绍

1.对称加密算法

对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:

  • DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

  • 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

  • AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

算法名称算法类型密钥长度速度解密时间(建设机器每秒尝试255个密钥)资源消耗
AES对称block密码128、192、256位1490000亿年
3DES对称feistel密码112位或168位46亿年

2.非对称算法

  • RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

  • DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS(数字签名标准);

  • ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:

  1. 抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。

  2. 计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。

  3. 存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。

  4. 带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。

3.散列算法

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。

单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:

  • MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。

  • SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;

SHA-1与MD5:

因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:

  1. 对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。

  2. 安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。

  3. 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。

加密过程概览

1.分块加密

即将明文分组一块块,分别使用弥月进行加密。再将密文块组合形成密文。AES是典型的代表。

2.分组加密

即将密钥分组加密,将明文分成一块块,用第一块加密出的密文作为第二块明文块加密的密钥,密钥分组加密。

转载于:https://www.cnblogs.com/lxyit/p/9459867.html

相关文章:

  • CSS基础2-盒子模型、定位、浮动
  • 集群架构(1)
  • python全栈开发 * background 定位 z-index * 180813
  • Prism中命令可用性无法自动刷新
  • shell入门基础常见命令及用法
  • 高可用,高并发
  • SqlServer日期时间格式转换
  • Go to sleep
  • 【CSS】小妙招,各种问题总结方法处理
  • exception ORA-00923: FROM keyword not found where expected
  • windows2003开了远程却连不上
  • Running Median
  • Java中getResourceAsStream的用法
  • Rust 2018临近:设法从Rust 2015过渡
  • 通过XAML Islands使Windows桌面应用程序现代化
  • 【剑指offer】让抽象问题具体化
  • 345-反转字符串中的元音字母
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript DOM 10 - 滚动
  • js继承的实现方法
  • js数组之filter
  • MySQL主从复制读写分离及奇怪的问题
  • PaddlePaddle-GitHub的正确打开姿势
  • Redis 中的布隆过滤器
  • spring security oauth2 password授权模式
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • sublime配置文件
  • Vultr 教程目录
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 强力优化Rancher k8s中国区的使用体验
  • raise 与 raise ... from 的区别
  • 阿里云ACE认证学习知识点梳理
  • 交换综合实验一
  • 组复制官方翻译九、Group Replication Technical Details
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​Java并发新构件之Exchanger
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #162 (Div. 2)
  • (06)金属布线——为半导体注入生命的连接
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C#)一个最简单的链表类
  • (day6) 319. 灯泡开关
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (四)库存超卖案例实战——优化redis分布式锁
  • (推荐)叮当——中文语音对话机器人
  • (五)MySQL的备份及恢复
  • (一) storm的集群安装与配置
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • .Net 8.0 新的变化
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net反编译工具
  • .net分布式压力测试工具(Beetle.DT)