密码学基础(一)常见密码算法分类

news2025/3/10 18:52:44

一、密码算法分类:

密码算法主要分为三类:对称密码算法、 非对称密码算法、摘要算法。
在这里插入图片描述

二、对称密码算法(Symmetric-key Algorithm)

1、概念

对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。

2、步骤

对称算法 是指加密秘钥和解密秘钥相同的密码算法,又称为 秘密秘钥算法 或 单密钥算法 。
该算法又分为 分组密码算法(Block cipher) 和 流密码算法(Stream cipher) 。

分组密码算法 又称块加密算法

  • 加密步骤一:将明文拆分为 N 个固定长度的明文块
  • 加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块
  • 加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文

流密码算法 又称序列密码算法

  • 加密:每次只加密一位或一字节明文

  • 解密:每次只解密一位或一字节密文

常见的分组算法: AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2 等
常见的流密码算法: RC4

AES:目前安全强度较高、应用范围较广的对称加密算法
SM1:国密,采用硬件实现
SM4:国密,可使用软件实现
DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法

二、非对称密码算法(Asymmetric-key Algorithm)

1.概念

非对称加密需要两把密钥:公钥和私钥,他们是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

2、步骤

非对称算法 是指加密秘钥和解密秘钥不同的密码算法,又称为 公开密码算法 或 公钥算法,该算法使用一个秘钥进行加密,用另外一个秘钥进行解密。

  • 加密秘钥可以公开,又称为 公钥
  • 解密秘钥必须保密,又称为 私钥

常见非对称算法包括 RSA、SM2(国密)、DH、DSA、ECDSA、ECC 等。

三、摘要算法(Digest Algorithm)

1.概念

摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数 等。

摘要算法所产生的固定长度的输出数据称为 摘要值散列值哈希值 ,摘要算法无秘钥。

摘要算法 通常用来做数据完整性的判定,即对数据进行哈希计算然后比较 摘要值 是否一致。

摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和 MAC(Message Authentication Code,消息认证码算法);另国密标准 SM3
也属于摘要算法。

  • MD 系列 主要包括 MD2、MD4、MD5
  • SHA 系列 主要包括 SHA-1、SHA-2 系列(SHA-1 的衍生算法,包含
    SHA-224、SHA-256、SHA-384、SHA-512)
  • MAC 系列 主要包括 HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384 和 HmacSHA512 算法

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

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

相关文章

8Manage PMO:如何借助系统软件解决多项目管理难点

随着企业不断发展壮大,大多数企业不管性质、规模和行业如何,都会同时进行多个项目,这已然成为一个普遍现象。虽然多项目管理可以提高资源利用率,加速项目交付,但同时也会带来一系列的难点。 如何在多个项目之间有效地…

Python基于词频排序快速挖掘需求大类

Python基于词频排序快速挖掘需求大类 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 一、所有的代码 这是所有的代码 from collections import defaultdict import jieba.posseg a…

华为机试题:HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

数字信息-数字编码挂钩法

一、前方无路,一切才刚开始0呼啦圈 1蜡烛2鹅 3金元宝4青龙5钩子6哨子 7七仙女8八卦镜9药酒二、少年中国说看到“1”想到“树”,想到“树”,想到“智慧树”,再想到“少年智则国智”看到“2”想到“鸭子”,想到“鸭子”&…

基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试

目录基于 centos7 搭建 laravelscoutelasticsearchik-analyzer 用于中文分词全文检索服务及测试相关软件及版本安装或升级jdk(版本:19.0.2)安装es(版本:8.1.1)安装ik-analyzer(版本:…

transformer目标检测开山之作detr

1. 将一个batch的图片输入backone获得feature。 (2,c,w,h)先输入resnet50中,得到(2,2048,w,h)。虽然这里channel不是256,但是在输入e…

pg mysql oracle 中的schema

1、schema。 pg中的schema表示当前db中数据库对象的命名空间(namespace),数据库对象包括但不限于表、函数、视图、索引等。 对于熟悉mysql的人来说,在第一次看到pg中的schema的概念时,可能会疑惑,schema不是表示database的吗&…

如何使用码匠连接 Elasticsearch

目录 在码匠中集成 Elasticsearch 在码匠中使用 Elasticsearch 关于码匠 Elasticsearch 是一个开源的分布式搜索和分析引擎,常用于处理大规模数据集的搜索、实时数据分析和数据挖掘任务。它支持多种数据源,包括关系型数据库(如 MySQL、Pos…

不想重写Dockerfile如何更改docker容器的挂载目录

一、问题 从网络上下载的很多Dockerfile或docker-compose文件进行启动容器的时候,部分重要的目录是依赖volumes挂载到容器内部的,如图 这就会出现一个问题,当我们想将容器打包,便于以后使用的时候,这部分挂载的文件是…

ArcGIS中地形渲染图制作技巧

01 概述 DEM数据作为GIS数据中常见的一种数据,经常都会使用到,除了用来生成等高线、高程点和做各种分析之外,生成地形渲染图也是常见的用途之一,这里给大家介绍一下ArcGIS中地形渲染图制作技巧,希望能够对大家有所帮…

领英开发外贸客户新方式—领英精灵

一、领英精灵是什么? 领英精灵是在LinkedIn领英这个全球最大的职业社交平台基础上研发出的一款工具软件,领英精灵最初研发定位是帮助那些想要在LinkedIn领英上挖掘开发客户需求的人群使用,但他的功能又不仅仅局限于外贸行业。干一行说一行&a…

Java知识复习(十一)RabbitMQ

1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息 3、Producer和…

Zookeeper3.5.7版本——集群部署(linux环境-centos7)

目录一、三台服务器信息二、Zookeeper3.5.7官网下载2.1、官网下载地址2.2、下载步骤三、三台服务器都安装jdk11(Zookeeper需要jdk支持)四、Zookeeper3.5.7集群部署4.1、centos7虚拟机1 (192.168.136.27)服务器安装步骤4.1.1、解压…

day23_多线程基础

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、进程与线程 三、创建线程 四、线程的API 五、线程状态 六、线程同步 零、 复习昨日 晨考 一、作业 见答案 二、进程与线程[了解] 一个进程就…

上海分时电价机制调整对储能项目的影响分析

安科瑞 耿敏花 2022年12月16日,上海市发改委发布《关于进一步完善我市分时电价机制有关事项的通知》(沪发改价管〔2022〕50号)。通知明确上海分时电价机制,一般工商业及其他两部制、大工业两部制用电夏季(7、8、9月)和冬季&#x…

MyBatis底层原理【源码运行时序图】

MyBatis初始化流程🛷 以下代码为例🎉 🎇可对应源码阅读 MyBatis初始化流程✨ #mermaid-svg-yoG1e8Dnp3UIAOUW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-yoG1e8Dnp3UIAOU…

robotframework 常用关键字

ctrl shift 空格:自动补全关键字 F5:搜索关键字 F8:执行用例 ctrl shift s:保存整个工程 ctrl r:查看报告 ctrl 鼠标悬浮:显示关键字的信息 ctrl #:屏蔽代码 ctrl $:…

4-spring篇

ApplicationContext refresh的流程 12个步骤 prepareRefresh 这一步创建和准备了Environment对象,并赋值给了ApplicationContext的成员变量 要理解Environment对象的作用 obtainFreshBeanFactory ApplicationContext 里面有一个成员变量,Beanfactory b…

Navicat 现已支持 OceanBase 全线数据库产品

Navicat 作为 OceanBase 生态工具的合作伙伴,这是双方产品适配第三个里程碑。2022 年 7 月的首个里程碑,Navicat 实现了 OceanBase 社区版的功能性兼容。同年10 月,进一步实现了针对 OceanBase 企业版( 兼容 MySQL 模式&#xff0…

一文图解|I/O 调度层

当我们使用 read() 和 write() 系统调用向内核提交读写文件操作时,内核并不会立刻向硬盘发送 I/O 请求,而是先将 I/O 请求交给 I/O 调度层进行排序和合并处理。经过 I/O 调度层加工处理后,才会将 I/O 请求发送给块设备驱动进行最终的 I/O 操作…