当前位置: 首页 > news >正文

[密码学] 密码学基础

目录

一 为什么要加密?

二 常见的密码算法

三 密钥

四 密码学常识

五 密码信息威胁

六 凯撒密码


一 为什么要加密?

在互联网的通信中,数据是通过很多计算机或者通信设备相互转发,才能够到达目的地,所以在这个转发的过程中,如果通信包被其他人捕获到,那么数据就不再安全了。

  • 中间人攻击:这是一种常见的攻击方式,黑客可以利用这种攻击方式来拦截客户端和服务端之间的通信。在客户端和服务端之间建立一个虚假的连接,然后将通信数据传递给目标服务端,并在客户端和服务端之间进行窃取或修改数据。即拿到客户端的数据,进行修改,
  • 网络嗅探工具:   Wireshark、Tcpdump等,这些工具能够监听网络上的数据包,并将其显示在黑客的计算机上,使他们能够查看通信的内容

二 常见的密码算法

密码算法是一种特殊的算法,它通过数学和计算机科学的技术手段,实现对信息的加密和解密,确保信息在传输过程中不被未经授权的人员读取、篡改或伪造。密码算法的核心目标是保护数据的机密性、完整性和真实性,同时也可以用于实现鉴权和抗抵赖等功能。

  • 对称密码算法(Symmetric Cryptography):

    加密和解密过程使用同一密钥(即一把钥匙开锁,锁上后再用这把钥匙打开),例如DES、AES(高级加密标准)等。
  • 非对称密码算法(Asymmetric Cryptography)或公钥密码算法:

    使用一对密钥,一个公开(公钥)用于加密,另一个私有(私钥)用于解密,或者相反用于数字签名,例如RSA、ECC(椭圆曲线密码学)、DH(Diffie-Hellman密钥交换)等。
  • 哈希函数(Hash Functions)或散列函数:

    将任意长度的输入(明文)转化为固定长度的输出(哈希值或指纹),特点是不可逆(理论上不能从哈希值直接反推出原始输入),用于数据完整性校验、消息认证码(MAC)生成、密码存储等领域,例如MD5(已不推荐用于安全性要求较高的场合)、SHA系列(SHA-1至SHA-3)等。
  • 消息认证码(Message Authentication Code, MAC)和数字签名算法:

    用于确认数据发送者的身份并确保数据在传输过程中未被修改,如HMAC、RSA签名、ECDSA等。
  • 序列密码(Stream Ciphers):

    按位或逐字节进行加密操作,常见的有RC4(已不再安全)等。
  • 分组密码(Block Ciphers):

    把明文数据分割成固定长度的块进行加密处理,例如DES、AES等。

三 密钥

密钥就相当于是钥匙,如果要是丢了那么数据必然是不安全的,任何形式的密码,如果密钥丢了,数据的安全性就无法保证了。

四 密码学常识

  • 不要使用保密的密码算法

指不要依赖于自己开发的、没有经过广泛评审和测试的密码算法。通常情况下,开发人员和安全专家不建议自行设计密码算法,而是应该使用已经广泛测试和被认可为安全的标准密码算法,如AES、RSA等。这是因为自行设计的密码算法可能存在未知的漏洞或弱点,而公认的标准算法经过了大量的安全分析和测试。

  • 任何密码总有一天都会被破解

这个观点提醒我们,没有绝对安全的密码。尽管某些密码算法可能非常强大,但随着计算技术的进步和攻击方法的演变,总会有可能破解密码的方法出现。因此,密码应该被视为一种安全性措施,但不能完全依赖它们来保护数据。

  • 密码只是信息安全的一部分

这个观点强调了信息安全的多层次性质。除了密码之外,还有其他安全措施,如访问控制、加密、身份验证、网络安全等,都是信息安全的重要组成部分。密码只是其中的一部分,必须与其他安全措施结合使用,以建立更全面的安全性防御。

五 密码信息威胁

  • 不可否认性

对于否认行为来说,如果发送方丢失了自己的密钥,被攻击者拿到,

在这种情况下,虽然数字签名确实是合法发送者所用的签名,但实际上通信行为是由黑客发起的。这使得接收者很难辨别通信是否来自合法发送者,因为签名验证通过了。

为了防止这种情况发生,重要的是发送者应该采取适当的措施来保护其私钥,如使用安全的存储设备、定期更换密钥、限制私钥的使用权限等。同时,接收者也应该谨慎验证签名,确保通信的真实性和完整性。

六 凯撒密码

一种古老且简单的替换密码,它基于字母表的固定位移

  • 加密时,明文中的每个字母都按照一个固定的数目向右或向左移动(是基于字母表移动),产生密文。例如,当位移量为3时,字母A将被替换为D,字母B将被替换为E,依此类推。
  • 解密时,就是将密文中的每个字母向相反的方向移动相同的位移量。
  • 要注意是按照字母表中的顺序移动,比如移动三个那么F就变成I。

6.1 凯撒密码的实现

  • 为了跟图示保持一致,这里就使用上面图中的ABCDEF并且固定位移数设置为3
  • 原始数据ABCDEF:  
  • 加密后数据DEFGHI
  • 解密后数据:ABCDEF
#include <iostream>
#include <windows.h>
using namespace std;
string encryptCaesar(string plaintext,int shift)
{string ciphertext = "";for(char& c: plaintext){if(isalpha(c)){char base = islower(c) ? 'a' : 'A';c = ((c - base + shift) % 26)  + base;ciphertext += c;}}return  ciphertext;
}// 解密函数
string decryptCaesar(string ciphertext,int shift)
{return  encryptCaesar(ciphertext,26 - shift);
}int main()
{SetConsoleOutputCP(CP_UTF8);string plainText = "ABCDEF";int shift = 3;string ciphertext = encryptCaesar(plainText,shift);cout<<"加密前数据:"<<plainText<<endl;cout<<"加密前数据:"<<ciphertext<<endl;cout<<"解密后数据:"<<decryptCaesar(ciphertext,shift);return 0;
}

相关文章:

[密码学] 密码学基础

目录 一 为什么要加密? 二 常见的密码算法 三 密钥 四 密码学常识 五 密码信息威胁 六 凯撒密码 一 为什么要加密? 在互联网的通信中&#xff0c;数据是通过很多计算机或者通信设备相互转发&#xff0c;才能够到达目的地,所以在这个转发的过程中&#xff0c;如果通信包…...

上海:6月1日起取消企业复工复产白名单制

财经新闻5月29日消息&#xff1a;上海市人民政府关于印发《上海市加快经济恢复振兴行动计划》的通知。 《方案》包括千方百计缓解各类市场主体困难&#xff0c;全面有序推进复工复产和市场复工复产&#xff0c;多措并举稳外资稳外贸&#xff0c;大力促进消费加速复苏&#xff0…...

SpringBoot扩展篇:循环依赖源码链路

SpringBoot扩展篇&#xff1a;循环依赖源码链路 1. 相关文章2. 一个简单的Demo3. 流程图3.1 BeanDefinition的注册3.2 开始创建Bean3.3 从三级缓存获取Bean3.4 创建Bean3.5 实例化Bean3.6 添加三级缓存3.7 属性初始化3.8 B的创建过程3.9 最终流程 1. 相关文章 SpringBoot 源码…...

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖&#xff08;刷新&#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…...

uni-app纵向步骤条

分享一下项目中自封装的步骤条&#xff0c;存个档~ 1. 话不多说&#xff0c;先看效果 2. 话还不多说&#xff0c;上代码 <template><!-- 获取一个数组&#xff0c;结构为[{nodeName:"流程发起"isAudit:falsetime:"2024-02-04 14:27:35"otherDat…...

【JavaEE -- 文件操作IO有关面试题】

文件操作IO有关面试题 1.查找硬盘上的文件位置1.1 思路1.2 执行代码 2. 实现文件复制2.1 思路2.2 代码执行 3. 打印搜索的词的文件路径3.1 思路3.2 代码执行 1.查找硬盘上的文件位置 给定一个文件名&#xff0c;去指定的目录中进行搜索&#xff0c;找到文件名匹配的结果&#…...

Open WebUI大模型对话平台-适配Ollama

什么是Open WebUI Open WebUI是一种可扩展、功能丰富、用户友好的大模型对话平台&#xff0c;旨在完全离线运行。它支持各种LLM运行程序&#xff0c;包括与Ollama和Openai兼容的API。 功能 直观的界面:我们的聊天界面灵感来自ChatGPT&#xff0c;确保了用户友好的体验。响应…...

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题&#xff0c;即使是非zookeeper的节点&#xff0c;或者是非集群内部节点&#xff0c;也可以通过nc扫描2181端口&#xff0c;获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述&#xff1a;CVE-2018-8012: A…...

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址&#xff0c;回车 5.2 填写库名&#xff0c;回车 6.提交和推送 6.1 点击✔提交…...

数据库底层原理

本文将介绍数据库在储存和通讯时的原理 数据库储存 首先&#xff0c;数据库的作用持久化存储数据&#xff0c;数据库的存储形式就是文件&#xff0c;每一张表就是一个文件&#xff0c;其他数据也是文件形式&#xff0c;比如索引文件。 比如像mysql数据库&#xff0c;其中的数…...

JVM虚拟机-实战篇

专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程) 目录 一、内存溢出和内存泄漏 什么是内存泄漏? 二、解决内存泄漏 解决内存泄漏的思路 top命令 发现问题 VisualVM 发现问…...

上岸跨考生的备考经验,送给零基础跨考计算机的你!

九个月的时间绝对是够用的&#xff0c;就算是跨考也够用&#xff01; 一般来说&#xff0c;专业课要复习三轮&#xff0c;九个月的时间&#xff0c;复习三轮完全够用 复习资料&#xff1a;王道四本书王道真题 打基础阶段&#xff1a;3-6月&#xff1a; 学习目标&#xff1a…...

js改变图片曝光度(高亮度)

方法一&#xff1a; 原理&#xff1a; 使用canvas进行滤镜操作&#xff0c;通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg&#xff0c;而不是canvas 调整出来的效果不是很好&#xff0c;图片不是高亮&#xff0c;而是有些发白 效果 代码 …...

【NLP笔记】大模型prompt推理(提问)技巧

文章目录 prompt概述推理&#xff08;提问&#xff09;技巧基础prompt构造技巧进阶优化技巧prompt自动优化 参考链接&#xff1a; Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing预训练、提示和预测&#xff1a;NL…...

【目标检测】西红柿成熟度数据集三类标签原始数据集280张

文末有分享链接 标签名称names: - unripe - semi-ripe - fully-ripe D00399-西红柿成熟度数据集三类标签原始数据集280张...

Java File类(文件操作类)

背景&#xff1a; 在Java编程语言中&#xff0c;操作文件和目录是一项常见的任务。而File类&#xff0c;则是java.io包中的重要类&#xff0c;它是唯一代表磁盘文件本身的对象。通过File类提供的方法&#xff0c;我们可以轻松地创建、删除、重命名文件和目录等操作。 构造方法&…...

正则表达式 vs. 字符串处理:解析优势与劣势

title: 正则表达式 vs. 字符串处理&#xff1a;解析优势与劣势 date: 2024/3/27 15:58:40 updated: 2024/3/27 15:58:40 tags: 正则起源正则原理模式匹配优劣分析文本处理性能比较编程应用 1. 正则表达式起源与演变 正则表达式&#xff08;Regular Expression&#xff09;最早…...

1、goreplay流量回放

目的 在实际项目中&#xff0c;会有大量的回归测试工作&#xff0c;通常会使用自动化代码的手段来实现回归&#xff0c;但是对于一个庞大的系统来说&#xff0c;通过自动化脚本的方式来实现回归测试&#xff0c;又显得很费时费力。并且如果有定期将线上数据同步到测试环境的需求…...

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点&#xff1a;无法做长序列&#xff0c;当输入很长时&#xff0c;最后面的输出很难参考前面的输入&#xff0c;即长序列会缺失上文信息&#xff0c;如下&#xff1a; 可能一段话超过50个字&#xff0c;输出效果就会很差了 LSTM通过忘…...

UDP send 出现大量“Resource temporarily unavailable”

背景 最近排查用户现场环境&#xff0c;查看日志出现大量的“send: Resource temporarily unavailable”错误&#xff0c;UDP设置NO_BLOCK模式&#xff0c;send又发生在进程上下文&#xff0c;并且还设置了SO_SNDBUF 为8M&#xff0c;在此情况下为什么还会出现发送队列满的情况…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...