首页 > 编程语言 >加密算法总结

加密算法总结

时间:2023-09-04 20:32:57浏览次数:38  
标签:总结 公钥 加密 认证码 数字签名 密钥 加密算法

AES

Advanced Encryption Standard

对称加密算法

RSA

Rivest-Shamir-Adleman

非对称加密算法

DES

Data Encryption Standard

对称加密算法

ECC

Elliptic Curve Cryptography

椭圆曲线密码;非对称加密算法

CMAC

Cipher-based Message Authentication Code

基于分组密码的消息认证码算法

SHA

Secure Hash Algorithm

密码散列函数

MD5

Message Digest Algorithm 5

一种常用的哈希函数、可以将任意长度的消息压缩成128位的摘要信息

MAC

Message Authentication Code

消息认证码,是一种确认完整性并进行认证的技术

HMAC

Hash-based Message Authentication Code

是一种基于哈希函数的消息认证码,用于验证消息的完整性和真实性。它将密钥与消息结合起来,通过哈希算法生成一个固定长度的认证标签,以此来确保消息没有被篡改。

MD

Message Digest

MD 消息摘要是一种使用定长哈希算法将任意长度的数据转换为固定长度摘要(通常是128位或256位)的技术。这个摘要可以用于验证数据完整性、数字签名和密码学安全等方面。

基础知识

  • 单向散列函数,保持数据完整性
  • 数字签名:数字签名是一种用于确保数据完整性和身份认证的技术。它基于公钥密码学,通过将消息使用私钥进行加密来创建数字签名,而任何人都可以使用相应的公钥对数字签名进行验证。如果数字签名有效,则意味着消息没有被篡改过且发送者是可信的。
  • UIO驱动(UIO driver)是一种通用的Linux内核驱动框架,可以用于连接用户空间应用程序和驱动程序。它的全称为User-Mode Linux I/O driver framework。
  •   UIO驱动采用了一种简单的设备模型,将设备看作一个内存映射区域,并通过sysfs文件系统提供用户空间应用程序访问设备的接口。UIO驱动允许用户自定义的设备实现,支持多个用户空间应用程序同时访问同一个设备,而不必担心竞争条件和并发访问问题。

  •   UIO驱动主要用于创建用户空间应用程序与硬件设备之间的接口,以便让用户空间应用程序能够直接操作硬件设备。它特别适合用于那些需要高性能、低延迟和可编程的硬件加速器,例如FPGA(Field Programmable Gate Array)等。UIO驱动的使用需要一定的Linux内核和驱动开发经验,但相比较其他驱动框架,UIO驱动的开发和调试难度要小得多。

  • 用于认证的技术包括消息验证码和数字签名。消息认证码能够向通信对象保证消息没有被篡改,而数字签名不仅能够向通信对象保证信息没有被篡改,还能够向所有第三方做出这样的保证。
  • 消息认证码(Message Authentication Code ,MAC),是一种确认完整性并进行认证的技术

消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值。

  • HMAC (Hash-based Message Authentication Code) 是一种基于哈希函数的消息认证码,用于验证消息的完整性和真实性。它将密钥与消息结合起来,通过哈希算法生成一个固定长度的认证标签,以此来确保消息没有被篡改。常见的 HMAC 算法包括 HMAC-MD5、HMAC-SHA1、HMAC-SHA256 等。
  • 消息认证码无法防止否认。
  • 数字签名就是通过将公钥密码"反过来用"而实现的。

在公钥密码中,密码分为加密密钥和解密密钥,用加密密钥无法进行解密。此外,解密密钥只能由需要解密的人持有,而加密密钥则是任何人都可以持有。


  • 堆成加密算法(HEAP-based encryption algorithm)是一种基于优先队列(Heap)和堆排序的加密算法。这种算法的基本思想是利用堆的特性和堆排序来对待加密的数据进行排序和重排,从而实现加密的目的。 具体步骤如下: 1. 将待加密的数据按照一定的规则存储在一个堆中,可以是最大堆或最小堆。 2. 对堆中的数据进行堆排序,从而实现对数据的重排。 3. 将排序后的数据按照一定的规则组合成加密后的结果。 堆成加密算法的优点包括: 1. 加密过程中的数据不易被解密,由于堆排序的特性,数据的顺序会被重新排列,增加了解密的难度。 2. 算法相对简单,容易实现。 然而,堆成加密算法也存在一些缺点: 1. 加密后的数据仍然可以通过解密过程还原原始数据,算法的安全性较低。 2. 算法的效率较低,堆排序的时间复杂度为O(nlogn),加密和解密的过程都需要进行堆排序,对于大规模的数据加密会有较大的时间开销。 综上所述,堆成加密算法是一种相对简单的加密算法,适用于对一般数据进行基本保护的场景。但在对安全性要求较高的应用中,推荐使用更为强大和安全的加密算法,如AES、RSA等。

公钥密码与数字签名的密钥使用方式


私钥

公钥

公钥密码

接收者解密时使用

发送者加密时使用

数字签名

签名者生成签名时使用

验证者验证签名时使用

谁持有密钥

个人持有

只要需要,任何人都可以持有

对称密码与公钥密码的对比


对称密码

公钥密码

发送者

用共享密钥加密

用公钥加密

接收者

用共享密钥解密

用私钥解密

密钥配送问题

存在

不存在,但公钥需要另外认证

机密性

Y

Y

消息认证码与数字签名的对比


消息认证码

数字签名

发送者

用共享密钥计算MAC值

用私钥生成签名

接收者

用共享密钥计算MAC值

用公钥验证签名

密钥配送问题

存在

不存在,但公钥需要另外认证

完整性

Y

Y

认证

Y(仅限通信对象双方)

Y(可适用于任何第三方)

防止否认

N

Y

标签:总结,公钥,加密,认证码,数字签名,密钥,加密算法
From: https://blog.51cto.com/u_15958702/7354897

相关文章

  • 总结流媒体服务前端的一个产品要点
    总结流媒体服务前端的一个产品要点    a.超时重连机制,当到达一定次数的时候,显示视频走丢了,请手动重试    b.视频比例的问题,当16:9的时候大于小于这个数值时会出现一定的问题    c.视频播放完毕的时候自动跳转页面    d.自动播放的问题,程......
  • 关于exgcd的总结
    关于exgcd的总结我们主要讨论的是\(ax+by=c\)1.exgcd算法1.1关于解的存在性有裴蜀定理知,对于方程\(ax+by=c\)存在解的充分必要条件是:\((a,b)|c\)tips:裴蜀定理如果\(a,b\)均为整数,则有整数\(x,y\)使得\(ax+by=\gcd(a,b)\),这个等式称为裴蜀等式。1.2exgcd算法介绍要求\(a......
  • 实习总结:踩过的一些坑
    目前接了几个需求,但每次写代码一时爽,debug火葬场,因此总结了一些我自己常常犯的错误:1、对于json的解析需要写之前明确每一层的类型和层级的嵌套关系。2、对于es如果需要获取10个以上检索效果,需要更改size。3、对于chanel如果采用range去读,需要保证其已经关闭。4、对于无法读库......
  • [ 总结 ] Linux 下文件描述符
    1、概述:文件描述符是内核为了高效管理已被打开的文件所创建的索引。是一个非负整数,用于代指被打开的文件。所有通过I/O操作的系统调用都通过文件描述符。文件描述符用以表明每一个被进程所打开的文件和socket 2、文件描述符的限制:Linux下最大文件描述符的限制......
  • [ 总结 ] Linux系统测试硬盘I/O
    检测硬盘I/O相对来说还是一个比较抽象的概念,但是对系统性能的影响还是至关重要的。(1)使用hdparm命令检测读取速度:   hdparm命令提供了一个命令行的接口用于读取和设置IDE和SCSI硬盘参数。   安装:      yuminstallhdparm   语法:      hdparm(选项......
  • log4j结合commons-logging配置总结
    作者fbysss关键字:loggingcommons-logging是一个通用的日志接口,commons-logging.jar包中自带了一个simplelog的实现log4j也实现了这个接口使用通用接口,方便在于如果更换实现的方式,只要修改一个配置项即可配置过程:commons-logging.properties必须放置在WEB-INF/classes/下面log4j.pro......
  • MySQL修改密码方法总结
    MySQL修改密码方法总结作者:intphp<scripttype=text/javascript></script><scriptsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js"type=text/javascript></script><scriptsrc="http://down.meety.com/asrep/......
  • Dotnet6 NPOI操作Excel基本操作总结
    背景需要对Excel进行读取和写入,目前使用Dotnet6开发环境,故直接使用。达到的效果:兼容.xls和.xlsx,识别行为空自动跳过,识别显示值,识别格式内容步骤Dotnet6Nuget安装NPOI,具体版本2.6.1,tips:搜索资料时,可能NPOI1与NPOI2可能有出入。使用方法获取相应文档对象......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • 反悔贪心总结
    一.OlympiadinProgrammingandSports-洛谷|计算机科学教育新生态(luogu.com.cn)(1)题意: (2)解题思路考虑按编程能力从大到小排序,先选完编程团队中的p个人,然后再考虑体育团队的s人,考虑维护3个优先队列,一个是a[i]的大根堆,一个是b[i]的大根堆,一个是b[i]-......