几种常用加密算法比较

由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。

几种常用加密算法比较

DES加密算法

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

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

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加密算法

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

Base64加密算法

Base64加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在JAVAPERSISTENCE系统HIBEMATE中,采用了Base64来将一个较长的唯一标识符编码为一个字符串,用作HTTP表单和HTTPGETURL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

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被破解。

加密算法是密码技术的核心,以上这些加密算法是常用的加密算法,而这些算法有些已经遭到破译,有些安全度不高,有些强度不明,有些待进—步分析,有些需要深入研究,而神秘的加密算法世界,又会有新的成员加入,期待更安全的算法诞生。

小知识之加密算法:

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

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

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

相关文章

python BeautifulSoup 爬虫运行出现 exited with code -1073741571

首先,exited with code -1073741571意思是栈溢出。具体可以看https://blog.csdn.net/vblittleboy/article/details/6613815 它的前一个错误是程序递归深度过深。 但我没有在函数里用递归? python认为你进入一个函数就进入更深一层的递归。 import sys#出…

ORACLE HANDBOOK系列之十一:分区(Partition)

Partitioning enables you to decompose very large tables and indexes into smaller and more manageable pieces called partitions. Each partition is an independent object with its own name and optionally its own storage characteristics. Oracle允许用户将大表以及…

不要错过路边的的风景

人生就像一次旅行。人们总是忙于奔赴目的地,却往往忽略了路边的风景。 随着年龄的增长,人们越来越没有时间去寻求生命中的惊奇和美丽了,他们只在乎地位,财富和权力。大多数人为了不落人后,已经花去了自己大部分时间和精…

复制表、复制表结构、复制数据

完全复制表(含表结构表数据) create table 新表名 as select * from 需要复制的表名; 复制表部分字段和数据 CREATE TABLE 新表名(列1,列2) AS SELECT 列1,列2 FROM OLD_TABLE;复制表结构不…

劝你不要转行

在知乎收到一个咨询,问题如下您好,想向您请教一些问题。想转行做嵌入式工程师个人基本信息29岁,电子与通信工程专业硕士,毕业后就职于某车企,主要从事类似项目管理一职。去年考入某事业单位,业余时间相对较…

STL中的map集合扩展字段比较方便

扩展字段map<string, string>真是个好东西&#xff0c; 在定各种协议时很常用&#xff0c;便于扩展 #include <iostream> #include <map> #include <string> using namespace std; void fun(const map<string, string> &mp) { } …

linux下DHCP的安装配置

今天在整理以前的资料的时候&#xff0c;看到了这篇过去积攒的资料&#xff0c;过程详细所以拿来给大家一块分享&#xff0c;同时我也在做&#xff0c;提高一下熟练度。 【实验名称】Linux下DHCP服务的配置与安装【实验拓扑】【实验目标】了解DHCP服务的工作原理&#xff0c;掌…

在GZIDG弄服务器的这一整夜,快乐

公母服务器: 去到IDG那里,2 台Dell ,一台五舟服务器: 初步给的网站架构,一台Dell服务器作为Web服务器,4cpu,4G内存,相信目前的架构能够满足初期的需要 整个架构做web服务器接公网,五舟服务器也接公网作为文件服务器,数据库做为内网与web服务器接一个端口 一个接…

175. Combine Two Tables

select FirstName, LastName,City, State from Personleft join Address on Person.PersonId Address.PersonId; 转载于:https://www.cnblogs.com/yuesi/p/10134925.html

STL中map的使用要点

我们都知道&#xff0c; 当map不存在某key时&#xff0c; 如果用下标操作&#xff0c; 便会产生新key。 因此&#xff0c; 要特别注意 #include <iostream> #include <map> #include <string> using namespace std; int main() { map<string, s…

浅谈一下嵌入式中的强符号和弱符号

__attribute__ 是一个编译器指令&#xff0c;其实是 GNU C 的一种机制&#xff0c;本质是一个编译器的指令&#xff0c;在声明的时候可以提供一些属性&#xff0c;在编译阶段起作用&#xff0c;来做多样化的错误检查和高级优化。用于在 C、C、Objective-C 中修饰变量、函数、参…

web前端开发之div+css教程精华收集二

11个让你代码整洁的原则http://www.xinran001.com/bbs/thread-73231-1-1.html HTML 实体字符http://www.xinran001.com/bbs/thread-256-1-1.html你真的了解HTML吗http://www.xinran001.com/bbs/thread-7258-1-1.html当inline-block和text-indent遇到IE6,IE7http://www.xinran00…

POJ_1862 Stripies 【贪心】

一、题面 POJ1862 二、分析 反省一下&#xff0c;自己英语水平着实不行&#xff0c;该题其实就是问若给出若干个这种生物&#xff0c;根据这种体重变换方式&#xff0c;最终合并成一个后&#xff0c;体重最少是多少。根据公式 $m 2\sqrt{m_{1}m_{2}}$ 我们可以发现&#xff0c…

C++ string assign()赋值常用方法

C string assign()赋值常用方法 函数assign()常用在给string类变量赋值. 常用方法有: 1,直接用另一个字符串赋值. 如str2.assign(str1);即用str1给str2赋值. 2,用另一个字符串的一个子串赋值 如str3.assign(str1, 2, 3); 3,用一个字符串的前一段子串赋值; 如str4.assign("…

SEO技巧:好的域名是网站成功的开始

很多人都知道做网站可以赚钱&#xff0c;所以很多懂一些网络技术的就开始制作自己的站点了。制作网站的开端&#xff0c;如果不是为了自己的兴趣&#xff0c;而是纯粹为了赚钱&#xff0c;那么如何把握和选择网站内容的主体和方向&#xff0c;往往就会成为令人头疼的一件事情。…

想成为硬件工程师,难不?

有很多朋友经常会问&#xff0c;成为高级嵌入式系统硬件工程师&#xff0c;需要做到哪些呢?那么&#xff0c;我们就先从嵌入式硬件工程师是个什么概念入手。一、如何理解“嵌入式”的概念呢?1、从硬件上&#xff0c;将基于CPU的处围器件&#xff0c;整合到CPU芯片内部&#x…

.Net/C#中Cache的用法

Cache 即高速缓存&#xff0c;使用合理可以提高网站访问速度&#xff0c;减少服务器压力 什么是缓存&#xff1f;Web 应用程序通常都是被多个用户访问。一个Web站点可能存在一个“重量级”的加载&#xff0c;它能够使得站点在访问的时候&#xff0c;拖慢整个服务器。当站点被大…

Maven继承

继承为了消除重复&#xff0c;可以把pom 中很多相同的配置提取出来&#xff1b;如&#xff1a;grouptId&#xff0c; version 等。 在使用的时候子工程直接继承父工程的依赖版本号&#xff0c;子工程中不再需要指定具体版本号&#xff0c;方便统一管控项目的依赖版本问题。 创建…

STL中vectortype的复制

STL vector的复制 #include <iostream> #include <vector> using namespace std; int main() { vector<unsigned int> v1, v2; v1.push_back(11); v1.push_back(44); v2 v1; cout << v2[1] <<…

FLEXAIR 界面展示。

http://www.scalenine.com/showcase.php 希望自己做的AIR程序更漂亮&#xff0c;有更好的体验么&#xff1f;请参考。 转载于:https://www.cnblogs.com/xxcainiao/archive/2008/04/27/1173520.html