数据时代,嵌入式工程师必须知道的八大加密算法

伴随着人工智能、物联网时代的到来,数据应用变得频繁起来,数据安全应该如何保护?软件加密算法都有哪些,这些算法在哪些方面得到了应用?慢慢读下去,你会发现围绕在我们身边的“小密码”。

 

 

对称加密算法

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。

 

DES加密算法

DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为256。

 

随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过,DES现在仅用于旧系统的鉴定,而更多地选择新的加密标准。

 

3DES加密算法

3DES是三重数据加密算法块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

 

3DES是DES向AES过渡的加密算法,加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文,这样:

3DES加密过程为:C=Ek3(Dk2(Ek1(M)))

3DES解密过程为:M=Dk1(EK2(Dk3(C)))

 

AES加密算法

AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

 

AES加密算法被设计为支持128/192/256位(/32=nb)数据块大小(即分组长度);支持128/192/256位(/32=nk)密码长度,,在10进制里,对应34×1038、62×1057、1.1×1077个密钥。

 

非对称加密算法

不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。

 

RSA加密算法

RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

 

DSA加密算法

DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多.

 

ECC加密算法

椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。椭圆曲线密码体制是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。解椭圆曲线上的离散对数问题的最好算法是Pollard rho方法,其时间复杂度为,是完全指数阶的。 

 

 

不可逆加密算法

不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS等。

 

MD5加密算法

MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

 

MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。

 

SHA1加密算法

SHA1是和MD5一样流行的消息摘要算法。SHA加密算法模仿MD4加密算法。SHA1设计为和数字签名算法(DSA)一起使用。

 

SHA1主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2“64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1不可以从消息摘要中复原信息,而两个不同的消息不会产生同样的消息摘要。这样,SHA1就可以验证数据的完整性,所以说SHA1是为了保证文件完整性的技术。

 

SHA1加密算法可以采用不超过264位的数据输入,并产生一个160位的摘要。输入被划分为512位的块,并单独处理。160位缓冲器用来保存散列函数的中间和最后结果。缓冲器可以由5个32位寄存器(A、B、C、D和E)来表示。SHA1是一种比MD5的安全性强的算法,理论上,凡是采取“消息摘要”方式的数字验证算法都是有“碰撞”的——也就是两个不同的东西算出的消息摘要相同,互通作弊图就是如此。但是安全性高的算法要找到指定数据的“碰撞”很困难,而利用公式来计算“碰撞”就更困难一目前为止通用安全算法中仅有MD5被破解。

 

当然除上述加密算法以外,也存在着其他方法,小编找到了一张图表,以做补充。 

转载于:https://www.cnblogs.com/shaobojiao/p/7908539.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-18239.html

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • SVM参数解析
  • javaweb实现教师和教室管理系统 java jsp sqlserver
  • 项目进行时
  • js 使用Math函数取得数组最大最少值
  • 为什么我tracert经过H3C设备的时候,老是*号,不回包
  • 王者荣耀交流协会final发布-第一次scrum立会
  • kbmmw 的HTTPSmartService中的跨域访问
  • Django折腾日记(django2.0)
  • 记录一次手机联系人整理(XML文件格式处理)
  • 2017 ACM/ICPC(北京)总结
  • phper的何去何从
  • python 正则表达式 符号及其定义
  • 【转】C++拷贝构造函数详解
  • selenium实现失败重运行
  • HDU4812 D tree 【点分治 + 乘法逆元】
  • mysql 存储session
  • 层级选择器
  • 从远程服务器中下载文件到本地
  • label标签 for属性
  • iOS 使用脚本自动化复制target
  • Windows Server 2008取消登录前的Ctrl+Alt+Delete组合键操作
  • FZU1977 Pandora adventure —— 插头DP
  • [USACO11DEC] 牧草种植Grass Planting
  • 【BZOJ3218】 a+b Problem
  • 使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能
  • 莫比乌斯反演入门
  • java生产环境增量发版陷阱【原】
  • C# Conditional(方法,属性的忽略)使用
  • 单点登录测试点
  • 消息队列一:为什么需要消息队列(MQ)?
  • 新手指引,php什么是常量、变量、数组、类和对象及方法?
  • 高级装饰器---验证用户登录
  • Beta冲刺Day4
  • Python语法基础——关于全局变量与局部变量
  • 无线安全审计工具FruityWifi初体验
  • EntityFrameworkCore DBFirst
  • 解决 ThinkPad x270 安装 ubuntu 14.04 后的网络问题
  • C#cmd执行命令隐藏窗口,并保持程序一直运行
  • [Python WEB开发] 使用WSGI开发类Flask框架 (二)
  • 12306微信小程序上线 提供余票查询暂不支持购票
  • BZOJ1877 [SDOI2009]晨跑 【费用流】
  • 反射方式,获取出集合ArrayList类的class文件对象
  • BZOJ1079 [SCOI2008]着色方案 【dp记忆化搜索】
  • Python内置函数(17)——chr
  • 自定义裁剪图片大小
  • 544. Top k Largest Numbers【medium】
  • SVM支撑向量机原理
  • 定位CPU高问题三把斧
  • .NET使用存储过程实现对数据库的增删改查
  • Mysql几种索引类型的区别及适用情况