1、常用的加密算法分类

常见的加密算法可以分成五类:

对称加密算法、非对称加密算法和、Hash 算法(也称摘要算法)、数字签名(Hash&RSA)和数字证书(Hash&RSA&CA)。

1)对称加密算法

指加密和解密使用相同密钥的加密算法。

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。

假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要 2 个密钥并交换使用,如果企业内用户有 n 个,则整个企业共需要 n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。

对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档。

常见的对称加密算法:

DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6 和 AES

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

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

3DES(Triple DES):是基于 DES,但强度更高;

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

2)非对称加密算法

指加密和解密使用不同密钥的加密算法,也称为公私钥加密。

假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。

如果企业中有 n 个用户,企业需要生成 n 对密钥,并分发 n 个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。

同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。

非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上 1000 倍。

常见的非对称加密算法:

RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

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

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

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

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

抗攻击性强:相同的密钥长度,其抗攻击性要强很多倍;

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

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

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

3)Hash 算法

Hash 算法特别的地方在于它是一种单向算法,用户可以通过 Hash 算法对目标信息生成一段特定长度的唯一的 Hash 值,却不能通过这个 Hash 值重新获得目标信息。

Hash(明文)--> 固定长度的摘要

因此 Hash 算法常用在不可还原的密码存储、信息完整性校验等。

特点:

无论明文多长,计算出来的摘要长度总是固定的。hash(‘a’)和hash(‘aaaaaaaaaaa’)形成的摘要长度是一样的;

一般明文不同,计算出来的摘要也不同。也就是相同的明文,计算出来的摘要是一样的,不同的明文形成的摘要一般是不一样(好的 Hash 函数不会发生碰撞);

只能进行正向的消息摘要,也就是说从消息摘要中不能恢复成原来的明文。

常见的 Hash 算法:

MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

4)数字签名:将明文进行摘要,然后再通过私钥进行加密的结果

MD5&RSA 算法和 SHA1&RSA 算法

A 给 B 发送信息,A 生成公钥和私钥并将公钥公开;

A 对发送消息进行数字摘要算法(Hash),然后再通过私钥进行加密;

A 将明文和加密后的密文发送给 B;

B 收到后,对密文用公钥进行解密,获得数据 C,再对明文进行摘要算法,获得数据 D,然后对比 C 和 D,这样就能确认 A 的身份。

B 收到 A 的文件,B 想确认是 A 发送的,那么可以根据数字签名方式,根据 A 的公钥进行解密然后比较,因为 A 的私钥是不公开的,这样匹配成功就能确认是 A 发送的。

5)数字证书

A 给 B 发送消息,A生 成公钥和私钥;

A 将公钥、公钥持有者、签名算法和过期时间等信息发送给 CA(数字证书认证机构);

CA 认可信息之后,通过 CA 的私钥进行签名,这时候数字证书就产生了;

接着 A 将明文、明文数字签名和数字证书一起发送给 B;

B 接受到后,通过 CA 的公钥进行解密,进行第一次校验,校验数字证书;

验证成功后,进行第二次检验,提取数字证书中的公钥,对密文进行解密。

在数字签名的基础上,再发送一个数字证书,这样的话接收方不需要维护一个公钥库,通过 CA 验证后在数字证书提取,获得公钥。

总结:

加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)和加解密速度等来衡量。

上述的算法中,除了 DES 密钥长度不够、MD2 速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。

2、加密算法的选择

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

2)对称加密算法不能实现签名,因此签名只能非对称算法;

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

4)在实际的操作过程中,我们通常采用的方式是:

采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

3、如何选择采用多少位的密钥

一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA 建议采用 1024 位的数字,ECC 建议采用 160 位,AES 采用 128 为即可,对于安全性较高的场合需要使用相应长度的秘钥。

4、加密算法应用

1)保密通信:

保密通信是密码学产生的动因,使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。

2)数字签名:

数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能,在政府机关、军事领域、商业领域有广泛的应用环境。

3)秘密共享:

秘密共享技术是指将一个秘密信息利用密码技术分拆成 n 个称为共享因子的信息,分发给 n 个成员,只有 k(k≤n) 个合法成员的共享因子才可以恢复该秘密信息,其中任何一个或 m(m≤k) 个成员合作都不知道该秘密信息。

利用秘密共享技术可以控制任何需要多个人共同控制的秘密信息、命令等。

4)认证功能:

在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。

5)密钥管理:

密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;

利用公钥密码体制进行密钥协商和产生,保密通信双方不需要事先共享秘密信息;

利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。

6)基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:

安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。

refer:

https://www.cnblogs.com/colife/p/5566789.html

https://www.cnblogs.com/-new/p/7199837.html

原文:https://blog.csdn.net/liwei16611/article/details/84838554

IoT:加密与安全:几种常用安全加密算法原理与用途解析相关推荐

  1. DotNet中几种常用的加密算法

    在.NET项目中,我们较多的使用到加密这个操作.因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要.现在提供几种常用的加密/解密算法. 1.用于文本和Base64编码文本的互 ...

  2. 不可逆加密:说一下你常用的加密算法

    加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密. 一.不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1.SHA-224.SHA-256.SHA-3 ...

  3. 学计算机键盘用什么轴,机械键盘别再盲目的选择,看看四种常用轴到底适合什么用途...

    电脑在现时代是一个多功能用途的必需品,不管是学生学习,还是商务办公,亦或是游戏爱好者,键盘都是必需品,当然,键盘的种类也有很多种,我们平常经常看到的就是,普通键盘,薄膜键盘,机械键盘. 机械键盘也是目 ...

  4. 几种常用加密算法比较

    几种常用加密算法比较 由于计算机软件的非法复制,通信的泄密.数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的 ...

  5. 还在重复造轮子?Java开发人员必知必会的20种常用类库和API

    介绍 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不 ...

  6. Java 必知必会的 20 种常用类库和 API

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么程序员都不喜欢使用switch,而是大量的 if--else if ?个人原创+1博客:点击前往,查看更多 ...

  7. Java 开发人员必知必会的 20 种常用类库和 API

    一.日志相关类库 日志库是很常见的,因为你在每一个项目中都需要他们.打印日志是服务器端应用中最重要的事情,因为日志是你了解你的程序发生了什么的唯一途径.尽管JDK附带自己的日志库,但是还是有很多更好的 ...

  8. Java开发人员必知必会的20种常用类库和API

    一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不是重复 ...

  9. 详细介绍!Linux 上几种常用的文件传输方式

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 责编:乐乐 来源:https://dwz.cn/VWIHhsOw 昨天发布一篇Linux文章( ...

最新文章

  1. 有助于改善性能的技巧(1)
  2. 600分钟搞定Python入门到实战
  3. 第一次写小程序,遇到的坑
  4. 【第7章】 使用函数和模块来重用你的代码
  5. magxfer FTP 组件 的使用例子
  6. flowable 中文文档_滴滴实习收获 | 产品经理就是写文档和开会沟通的吗?
  7. 开门红讨采头,开工喜庆红色PSD分层海报模板
  8. paip.java 以及JavaScript (js) 的关系以及区别
  9. CSDN上传的资源为何不能自定义下载积分?
  10. java车牌识别字符分割_【车牌识别】-车牌中字符分割代码详解
  11. 使用JavaScript读取excel表格数据并导入到数据库
  12. 金三银四,冰河为你整理了这份20万字134页的面试圣经!!
  13. 计算机人工智能领域英文文献,人工智能英文参考文献精选
  14. NCA: Neighbourhood Components Analysis
  15. Linux中vsftpd服务配置
  16. 大白菜android模拟器,大白菜U盘启动制作工具 v5.1
  17. OSChina 周日乱弹——如何请假不被老板骂
  18. OpenGL ES glfw 下载和使用
  19. 中介房屋买卖合同及违约责任
  20. 当“AI”对上“AI”,骚扰电话能否被扼杀在“苗芽”

热门文章

  1. EasyUi datagrid列表增加复选框
  2. 第十周Java学习总结
  3. 明白了一个重要的道理
  4. Python 如何在csv中定位非数字和字母的符号
  5. 调试输出类型为dll的程序
  6. DYNAMIC_DOWNCAST STATIC_DOWNCAST IsKindOf
  7. JS之Date对象和获取系统当前时间
  8. CentOS 8安装logrotate切割日志
  9. 关于Ubuntu 16.04系统挂载硬盘以及迁移MYSQL数据存储目录的操作步骤
  10. 【SQL】通过rowid查找及删除重复记录