密码学【第一节:密码学概述】
前言
在区块链的整个体系中大量使用了密码学算法,比如用于 PoW 的哈希算法,用于完整性验证的 Merkle Tree,用于交易签名与验证的数字签名算法,用于隐私保护的零知识证明等等。
可以说密码学是保证区块链安全的基石,而区块链的广泛应用也推进了密码学的发展。在区块链内核 CITA 的 v0.18 中,新增了「基于 Rust 语言的国密算法库」新特性。这次更新,使用户在尊重版权的前提下,即可自由调用 Rust 实现的国密算法库,来匹配业务场景所需的国密签名算法,大幅降低企业用户及开发者获得高性能区块链底层设计服务的成本,方便用户打造最贴近业务需求的区块链。
现代信息安全的基本要求:
- 信息的保密性 Confidentiality:防止信息泄漏给未经授权的人(加密解密技术)
- 信息的完整性 Integrity:防止信息被未经授权的篡改(消息认证码,数字签名)
- 认证性 Authentication:保证信息来自正确的发送者(消息认证码,数字签名)
- 不可否认性 Non-repudiation:保证发送者不能否认他们已发送的消息(数字签名)
一、什么是密码学
密码学的英语单词是 Cryptograghy,是由希腊单词 Kryptos(隐藏)和 Graphin(写)派生出来的,最初代表的意思是用来隐秘的传递信息。隐藏和写就是隐写,在古典密码学的发展中就有一门称为隐写术的技术,比如说藏头诗就是一种隐写术。在《巨人的陨落》中,艾瑟尔和弟弟比利就是通过每隔两个单词就会加一个单词来作为加密后的密文,这也是隐写术的一个例子。隐写术发展到今天演变为数字水印技术,一般在文件中加一个标识信息(即数字水印),可以起到追踪溯源,防伪和版权保护的作用。
密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。
密码学一开始的功能是在有恶意攻击者存在的环境下,保护双方通信安全,现在是用来保护信息安全的核心技术。
所以密码学旨在保护协议免受攻击者攻击的一种安全措施,使之成为安全协议
二、密码学发展阶段
密码学发展大致分为三个阶段:
前两个阶段又称为传统密码。
古典密码时期
起始时间:从古代到19世纪末,长达几千年。
技术工具:手工。
通信手段:信使。
密码体制:纸、笔或者简单器械实现的代换及置换,是一种艺术(富有创造性的方式、方法)。
典型密码:凯撒密码、维吉尼亚密码等。
近代密码时期(不讨论)
起始时间:从20世纪初到20世纪50年代,即一战及二战时期。
技术工具:机械设备。
通信手段:电报。
密码体制:手工或电动机械实现复杂的代换及置换,仍是一门艺术。
典型密码:Vernam密码、转轮密码等。
现代密码时期
起始时间:从1949年至今。
技术工具:计算机(针对二进制的比特位,而不是字符) 1字=2字节=16位=16比特
通信手段:无线通信、有线通信、计算网络等。
密码体制:对称密码(分组密码、序列密码)和非对称密码(公钥密码),有坚实的数学理论基础,成为一门科学。
典型密码:DES、AES、RC4、RSA、SHA等。
三、密码主要功能
机密性
-我与你说话时,别人能不能偷听?
-别人偷听到了能不能听懂?
机密性是指保证信息不泄露给非授权的用户或实体,确保存储的信息和传输的信息仅能被授权的各方得到,而非授权用户即使得到信息也无法知晓信息内容,不能使用。
完整性
-收到的传真不太清楚?
-传送过程过程中别人篡改过没有?
完整性是指信息未经授权不能进行改变的特征,维护信息的一致性,即信息在生成、传输、存储和使用过程中不应发生人为或非人为的非授权篡改(插入、替换、删除、重排序等),如果发生,能够及时发现。
认证性
-我不认识你!
-你是谁?
-我怎么相信你就是你?
-要是别人冒充你怎么办?
认证性是指确保一个信息的来源或源本身被正确地标识,同时确保该标识的真实性,分为实体认证和消息认证。
消息认证是指能向接收方保证该信息确实来自于它所宣称的源。
实体认证是指参与信息处理的实体是可信的,即每个实体的确是它所宣称的那个实体,使得任何其它实体不能假冒这个实体。
不可否认性
-我收到货后,不想付款,想抵赖,怎么样?
-我将钱寄给你后,你不给发货,想抵赖,如何?
不可否认性是防止发送方或接收方抵赖所传输的信息,要求无论发送方还是接收方都不能抵赖所进行的行为。因此,当发送方发送一个信息时,接收方能证实该信息的确是由所宣称的发送方发来的;当接收方收到一个信息时,发送方能够证实该信息的确送到了指定的接收方。
四、密码系统的组成
一个密码系统(System)是由明文(Plaintext)、密文(Ciphertext)、密钥(Key)、加密算法(Encryption Algorithm)和解密算法(Decryption Algorithm)五部分组成的,即s={M,C,K,E,D}。
- 信息的原始形式称为明文。
- 明文经过编码变换所生成的称为密文。
- 密钥是指控制明文与密文之间相互变换的,分为加密密钥和解密密钥。
- 对明文进行编码变换生成密文的过程称为加密,编码的规则称为加密算法。
- 将密文恢复出明文的过程称为解密,恢复的规则称为解密算法。

五、重点导学

相关文章:
密码学【第一节:密码学概述】
前言 在区块链的整个体系中大量使用了密码学算法,比如用于 PoW 的哈希算法,用于完整性验证的 Merkle Tree,用于交易签名与验证的数字签名算法,用于隐私保护的零知识证明等等。 可以说密码学是保证区块链安全的基石,而区…...
Leetcode 95. 不同的二叉搜索树 II
文章目录 题目代码(9.21 首刷看解析) 题目 Leetcode 95. 不同的二叉搜索树 II 代码(9.21 首刷看解析) class Solution { public:vector<TreeNode*> generateTrees(int n) {return build(1,n);}vector<TreeNode*> bu…...
Nodejs+vue高校机房设备管理系统jt07u
开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 集成IDE对高校机房设备管理系统统进行开发,整合系统的各个模块。 拟开发的高校机房设备管理系统通过测试,确保在最大负载的情况下…...
Purple-Pi-OH OHOS SDK编译手册
一、源码获取 1.1 源码获取 链接:百度网盘 请输入提取码 提取码:1234 $ mkdir purple-pi #将下载的ido_purple_pi_oh_ohos3.2_sdk.tgz拷贝到purple-pi $ cd purple-pi $ md5sum ido_purple_pi_oh_ohos3.2_sdk.tgz e6ca2d96aa7c628992ae0bbf4d14c2ca …...
Java高级-stream流
stream流 1.介绍2.将List转成Set3.将List转成Map4.计算求和reduce5.查找最大值max和最小值min6.Match匹配7.过滤器 filter8.分页limit 跳过skip9.数据排序 sorted 1.介绍 stream流可以非常方便与精简的形式遍历集合,实现过滤、排序等功能 2.将List转成Set stream…...
Python环境搭建
Python|环境搭建&第一个py程序 文章目录 Python|环境搭建&第一个py程序运行环境搭建验证安装是否成功安装PyCharm第一个python程序避免每次打开都进入上次关闭的项目 运行环境搭建 官网:https://www.python.org/downloads/windows/ 注意:下载过…...
JOSEF约瑟 SSJ-41B SSJ-41A 静态时间继电器 延时范围0.02-9.99s
SSJ静态时间继电器 系列型号: SSJ-11A静态时间继电器;SSJ-12A静态时间继电器; SSJ-11B静态时间继电器;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间…...
文件MultipartFile上传同时,接收复杂参数
方案一MultipartFile和dto分开 PostMapping("/uploadData") public Result<Object> uploadData(RequestParam("file") MultipartFile file,RequestPart() DataDTO dataDTO) {// 处理文件上传逻辑,如保存文件到本地或云存储// 处理接收到…...
Nginx 获取当前机器IP- Protocol- Port
Full Example Configuration | NGINX Alphabetical index of variables $server_addr:当前nginx所部署的机器 $server_port:当前监听的port server {listen 12345 udp;return ‘$server_addr:$server_port; } 参数说明示例$remote_addr$remote_user$…...
Unity丨自动巡航丨自动寻路丨NPC丨
文章目录 概要功能展示技术细节小结 概要 提示:这里可以添加技术概要 本文功能是制作一个简单的自动巡逻的NPC,随机自动寻路。 功能展示 技术细节 using UnityEngine;public class NPCController : MonoBehaviour {public float moveSpeed 5.0f; // …...
Mysql002:(库和表)操作SQL语句
目录: 》SQL通用规则说明 SQL分类: 》DDL(数据定义:用于操作数据库、表、字段) 》DML(数据编辑:用于对表中的数据进行增删改) 》DQL(数据查询:用于对表中的数…...
排水管网液位监测,排水管网液位监测方法
排水管网是城市生命线基础设施的重要组成部分,它的正常运行直接关系到城市的洪水防治、环境保护和居民生活质量。对排水管网液位进行实时监测对管理和维护排水系统稳定运行具有重要作用。那么如何对监测排水管网液位呢?本文将着重为大家详细介绍排水管网液位监测方…...
ansible的个人笔记使用记录
1.shell模块使用,shell模块------执行命令,支持特殊符 ansible all -m shell -a yum -y install nginx ansible all -m shell -a systemctl restart nginx ansible all -m shell -a systemctl stop nginx && yum -y remove nginx2. file模块…...
OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(7)聊天机器人 / ChatBot
聊天机器人 / ChatBot 使用大型语言模型来构建你的自定义聊天机器人 在本视频中,你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。 环境准备 首先,我们将像往常一样设置OpenAI Python包。 import os import openai from dotenv import…...
公司监控员工电脑用什么软件?应该怎么选?
在当今的数字化时代,企业需要对其员工的活动进行适当的监控,以确保企业的信息安全,维护企业的正常运作,并且保证员工的工作效率。然而,如何在尊重员工隐私权的同时,实现这一目标,却是一个挑战。…...
探索创意的新辅助,AI与作家的完美合作
在现代社会,文学创作一直是人类精神活动中的重要一环。从古典文学到现代小说,从诗歌到戏剧,作家们以他们的独特视角和文学天赋为我们展示了丰富多彩的人生世界。而近年来,人工智能技术的快速发展已经渗透到各行各业,文…...
计算机类软件方向适合参加的比赛
前言 博主是一名计算机专业的大三学生,在校时候参加了很多比赛和训练营,现在给大家博主参加过的几个的比赛,希望能给大一大二的学生提供一点建议。 正文 最近也有比赛的,我会从时间线上来给大家推荐一些比赛,并且给…...
win11、win10使用python代码打开和关闭wifi热点的正确方法
问题一 win10、win11,可以在任务栏的WIFI图标启动移动热点,但是无法设置SSID和密码。在网上搜索好久,无解。 万能的网络解决不了,只能自己动手解决了。 问题二 我当前的WiFi驱动程序不支持承载网络,如果我输入netsh…...
spark的数据扩展
会导致数据扩展的操作; 如何避免数据扩展; 一 countDistinct操作 1. 扩展原因 Spark的count distinct操作可能会导致数据扩展的原因是,它需要在执行操作之前对所有不同的值 进行分组。这意味着Spark需要将所有数据加载到内存中,并将其按照不同的值进行…...
前后端分离-图书价格排序案例、后端返回图片地址显示在组件上(打印图片地址)
前后端分离之图书价格排序案例,之后端返回图片地址显示在组件上 注意:分别建前后端项目,前端项目只写前端代码,后端项目只写后端代码1 图书后端 1.1 图书后端之建表 1.2 图书后端之序列化类 1.3 图书后端之视图类 1.4 图书后端之…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
AWS vs 阿里云:功能、服务与性能对比指南
在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...
