【大全】常用加解密算性能、安全对比

常用算法
1、古典加密算法
古典密码(classical cryptography)编码方式归根结底主要就是置换和代换.
置换:已知明文字母集S={a,b},置换后的密码可以是S’={b,a},即将明文字符位置发生变化后形成的密码就是置换密码.
代换:已知明文集S1={a,b,c},S2={1,2,3},将S1中的字符代换为S2中对应位置的字符,那么S1将代换后的密码为S’={1,2,3},即将明文信息替换为另一个字符集中的字符形成的密码称为代换密码.
古典密码因其加密过程过于简单:加密过程本质就是从明文字母表到密文字母表的一一映射,这样很不安全,在实际的应用中基本不使用.
2、DES加密算法
DES加密算法是一个利用64位的密钥对以64位为单位的块数据进行加解密。 对称加密算法是应用最早的加密算法,技术成熟,在进行对称加密的过程中,发送方将明文信息和加密秘钥一起进行加密处理后,将生成的密文信息发送给接收方,接收方收到密文后,使用已知的秘钥对其进行解密,才能得到正确的明文信息.
3、AES加密算法
AES即高级加密标准,是新一代的数据加密标准,是对DES的升级,加密效果更好,破解难度更大,安全性更好. AES是常用的分组(128位)、对称加密算法,采用相同秘钥对明文进行加解密,他的速度比RSA算法要快很多,一般在数据加解密和文件加解密过程中使用。
4、RSA加密算法
RSA是目前最流行的非对称加解密算法之一,也被称为公钥加密算法,即加密秘钥和解密秘钥是不相同的.
使用RSA加密的时候,会产生一对密钥对,公钥和私钥,公钥是大家都可以知道的,私钥是只有信息的发送方和接收方知道的,其他任何第三方都不能知道的,即必须保证私钥的私有性和安全性.通常情况下,当数据在网络中传输时,私钥是不会和数据一起传送,这样就减少了秘钥泄露的可能性.
通常情况下,对于大数据的加密,采用DES或AES进行加密,然后使用RSA对加密秘钥进行加密,数据发送之后,接收方使用RSA解密秘钥对DES或AES的秘钥进行解密,然后用解密出来的秘钥对数据进行解密.
5、哈希加密算法
5.1 MD5加密算法
MD5(message-digest algorithm 5 )算法模型是一个安全的散列算法,输入两个不同的信息一般情况下不会得到相同的输出值,即两个不同的明文信息经过MD5加密之后不会得到相同的密文;反过来,根据密文信息,不能得到原始的明文信息,即MD5加密过程不可逆. 如果要破解MD5加密的密文,目前没有现成的算法,只能通过“撞库”.
MD5加密特点 ①长度固定;②计算简单;③抗修改性;④不可逆性.
5.2 SHA加密算法
SHA1和SHA2,常用的有SHA512、SHA256算法等,其中SHA256与MD5类似,但是安全性更高。
6、其他加密算法
椭圆加密算法;

总结性能排名AES、MD5、SHA-256、DES、RSA。具体分析如下:

1、AES:凭借分组整体替换,每次循环处理更多原文数据,即使需要密钥参与运算,还是能和MD5速度处于同一水平线上甚至略胜一点点。

2、MD5:虽然哈希算法里每次是3个32位字的原文与缓存值进行运算,虽然不需要密钥参与运算,但性能并没有与AES拉开差距,主要原因是每次处理的原文没有AES多。

3、SHA-256:和MD5相比,每次处理的字数不变,缓存值更多,算法更复杂,比MD5慢是正常的。

4、DES:由于没有分组处理,仅仅是按位替换,每次循环处理的原文数据少,再加上密钥需要参与运算,比不可逆算法慢是正常的。

5、RSA:基本符合预期,数据量少计算量小,凭借最简洁的运算,耗费时间少,但数据量一大,运算量大,就被拉开明显差距了。

安全

这里先讨论下各算法根据密文得到原文的加密或解密次数。

MD5:该算法不可逆,破解只能靠穷举法,而且原文越大,时间越长些,密文输出128bit,范围是2的128次方,即最长需要穷举原文加密次才能破解。

SHA-256:与MD5类似,破解只能靠穷举法,密文输出256bit,范围是2的256次方,即最长需要穷举原文加密次才能破解。

DES:该算法密钥只有56位有效,有密文后解密速度恒定,需要穷举密钥解密次才能破解。

AES:该算法密钥有128、192、256位,再只有密文的情况下,这三种密钥都得穷举,最长得解密才破解。

RSA:该算法密钥有512、1024、2048位,光穷举密钥就得运行次,再加上该算法加密解密耗时长,破解异常困难。

以上算法安全性是:RSA>SHA-256=>AES>MD5>DES

运用

MD5:由于速度快,雪崩效应,返回值固定。常用于文件或数据校验。

SHA-256:由于速度比MD5稍慢,雪崩效应,返回值固定,且安全性远大于MD5,也不担心密钥暴露。可用于文件或数据校验,保存密码。

DES:该算法已淘汰,速度慢,安全性差,现在基本没有运用了。

AES:由于速度快,算法可逆,安全性高(不暴露密钥的话),可用于加密传输信息

RSA:由于安全性高,算法可逆,有公钥和私钥,但大量数据下加密解密慢,可用于验签、加密传输少量信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript高架高级(四)---这可能是你看过的最完整的this指向

前言 简单阐述 前端的初学者在学习Javascript中this指向的时候经常都会一头雾水,尤其是在ES6箭头函数出现之前。 this指向之所以容易让人头疼,原因在于 this 是在代码执行时根据环境和情况不同才决定绑定为什么值。 所以本篇文章主要是介绍和总结了各…

Openstack(T) 部署Ceilometer服务 ---mongo命令error

执行如下命令 # mongo --host controller --eval db db.getSiblingDB("ceilometer"); db.addUser({user: "ceilometer", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ]}) 出现错误 1.安装mongo ①vi /etc/yum.r…

数据结构进阶篇 之 【二叉树】详细概念讲解(带你认识何为二叉树及其性质)

有朋自远方来,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,鞭数十,驱之别院 一、二叉树 1、二叉树的概念 1.1 二叉树中组分构成名词概念 1.2 二叉树的结构概念 1.3 特殊的二叉树 2、二叉树的存储结构 …

全面:vue.config.js 的完整配置

vue.config.js是Vue项目的配置文件,用于配置项目的构建、打包和开发环境等。 在Vue CLI 3.0之后,项目的配置文件从原来的build和config目录下的多个配置文件,合并成了一个vue.config.js文件。这个文件可以放在项目的根目录下,用于…

向赵丽颖学习大女主式的生活方式!

最近,随着电视剧《与凤行》的热播,赵丽颖再次以其精湛的演技和不变的专业状态回到了大众视野。从《楚乔传》的坚韧女将到《知否知否应是绿肥红瘦》中的睿智女性,赵丽颖的每一次转变都让人眼前一亮。尽管在这几年中,她也经历了许多…

AI入侵游戏业:是颠覆者还是创新助手?揭秘未来游戏新趋势!

在科技日新月异的今天,人工智能(AI)已经成为各行各业的关注焦点。而在娱乐产业中,AI技术的引入也让人们对电子游戏的未来发展产生了无限遐想。那么,AI究竟会给电子游戏行业带来怎样的变革?它会成为行业的颠…

机器学习 - save和load训练好的模型

如果已经训练好了一个模型,你就可以save和load这模型。 For saving and loading models in PyTorch, there are three main methods you should be aware of. PyTorch methodWhat does it do?torch.saveSaves a serialized object to disk using Python’s pickl…

AI大模型学习的伦理与社会影响

AI大模型学习 随着人工智能技术的快速发展,AI大模型学习成为当前热门研究领域之一。AI大模型学习是指基于大规模数据集和深度学习模型进行训练,以实现更高的准确性和复杂性。这些大模型已经在几乎所有领域都取得了显著的成就,包括自然语言处…

通讯录管理系统实现(C++版本)

1.菜单栏的设置 (1)我么自定义了一个showmenu函数,用来打印输出我们的菜单栏; (2)菜单栏里面设置一些我们的通讯录里面需要用到的功能,例如增加联系人,删除联系人等等 2.退出功能…

ocrclass.h:117:18: error: field ‘end_time‘ has incomplete type ‘timeval‘

Alpine Linux v3.5上安装 tesseract-4.1.1 报错: 缺少timeval函数 ocrclass.h:117:18: error: field end_time has incomplete type timeval Current Behavior: In file included from control.cpp:37:0: ../../src/ccutil/ocrclass.h:117:18: error: field end…

javaWeb私人牙科诊所管理系统

一、摘要 随着科技的飞速发展,计算机已经广泛的应用于各个领域之中。在医学领域中,计算机主要应用于两个方面:一是医疗设备智能化,以硬件为主。另一种是病例信息管理系统(HIS)以软件建设为主,以…

1978-2022年全国31省社会消费品零售总额数据

1978-2022年全国31省社会消费品零售总额数据 1、时间:1978-2022年 2、指标:社会消费品零售总额 3、范围:31省市 4、来源:整理自国家统计J和各省年鉴 5、缺失情况说明:1997-2022年31省市均无缺失, 199…

GB 16807-2009 防火膨胀密封件检测

防火膨胀密封件是指火灾时遇火或高温作用能够膨胀,且能辅助建筑构配件使之具有隔火、隔烟、隔热等防火密封性能的产品。 GB 16807-2009防火膨胀密封件检测项目: 测试项目 测试方法 外观 GB 16807 尺寸允许偏差 GB 16807 膨胀性能 GB 16807 产烟…

随机链表的深拷贝

目录 一、何为深拷贝? 二、题目 三、思路 1.拷贝节点插入到原节点后面 2.控制拷贝节点的random 3.脱离原链表 : 尾插的思想 四、代码 五、附加 一、何为深拷贝? 一个引用对象一般来说由两个部分组成:一个具名的Handle,也就…

spring boot3 解决跨域几种方式

在Spring Boot 3中,解决跨域请求(CORS,Cross-Origin Resource Sharing)的问题主要有以下几种方式: 1. 使用CrossOrigin注解 你可以直接在Controller类或者具体的请求处理方法上使用CrossOrigin注解来允许跨域请求。 …

Java面试题:请解释Java中的输入输出(I/O)流?详细说明应用场景

Java中的输入输出(I/O)流是用于读取和写入数据的机制。在Java中,I/O流被设计为按照流的方向和数据源/目标类型进行分类。流的方向分为输入流和输出流,而数据源/目标类型则分为字节流和字符流。 流的方向: 输入流&…

面试官问我 ,try catch 应该在 for 循环里面还是外面?

首先 , 话说在前头, 没有什么 在里面 好 和在外面好 或者 不好的 一说。 本篇文章内容: 使用场景 性能分析 个人看法 1. 使用场景 为什么要把 使用场景 摆在第一个 ? 因为本身try catch 放在 for循环 外面 和里面 &#…

图片标注编辑平台搭建系列教程(2)——fabric.js简介

文章目录 综述数据管理图形渲染图形编辑事件监听预告 综述 fabric提供了二维图形编辑需要的所有基础能力,包括:数据管理、图形渲染、图形编辑和事件监听。其中,图形编辑可以通过事件监听和图形渲染来实现,所以可以弃用。数据管理…

2024年NOC大赛软件创意编程(python初中组初赛)真题

题型和分值:单选题(20题,40分)、判断题(5题,10分)、多选题(5题,20分)、填空题(10题,30分) 一、单选题(每题2分,共20题,满分40分) 1、下面的程序,会无限循环下去的是( ) A&#x…

【数据结构】双向奔赴的爱恋 --- 双向链表

关注小庄 顿顿解馋๑ᵒᯅᵒ๑ 引言:上回我们讲解了单链表(单向不循环不带头链表),我们可以发现他是存在一定缺陷的,比如尾删的时候需要遍历一遍链表,这会大大降低我们的性能,再比如对于链表中的一个结点我们是无法直接…