[密码学] 密码学基础

news/2024/5/12 21:24:50

目录

一 为什么要加密?

二 常见的密码算法

三 密钥

四 密码学常识

五 密码信息威胁

六 凯撒密码


一 为什么要加密?

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

  • 中间人攻击:这是一种常见的攻击方式,黑客可以利用这种攻击方式来拦截客户端和服务端之间的通信。在客户端和服务端之间建立一个虚假的连接,然后将通信数据传递给目标服务端,并在客户端和服务端之间进行窃取或修改数据。即拿到客户端的数据,进行修改,
  • 网络嗅探工具:   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;
}


http://www.mrgr.cn/p/44864381

相关文章

Oracle查询数据库万能SQL

Oracle 数据库表简要说明数据库表 描述USER 开头的 只能查询自身用户的表DBA 开头的 最高权限,只能用sys、system用户才能查询CDB 开头的 Container Database 数据库容器ALL 开头的 sys、system、普通用户都能查查询数据库表 -- 查询数据库表字段:以下的表都可以作为主表查询…

134.加油站

// 定义一个名为Solution的类 class Solution {// 定义一个公开方法canCompleteCircuit&#xff0c;输入参数为两个整数数组gas和cost&#xff0c;分别代表加油站的汽油量和消耗油量public int canCompleteCircuit(int[] gas, int[] cost) {// 初始化当前剩余油量sum为0&#x…

开启污水处理新纪元:3D可视化技术引领行业变革

在科技日新月异的今天,环保事业也迎来了前所未有的发展机遇。污水处理作为环保领域的重要组成部分,其技术的革新与进步,对于保护水资源、维护生态平衡具有重要意义。在科技日新月异的今天,环保事业也迎来了前所未有的发展机遇。污水处理作为环保领域的重要组成部分,其技术…

PCL拟合并绘制平面(二)

使用RANSAC拟合点云平面 1、C实现2、效果图 普通的点云平面拟合方式在一般情况下可以得到较好的平面拟合效果&#xff0c;但是容易出现平面拟合错误或是拟合的平面不是最优的情况。此时就需要根据自己的实际使用情况&#xff0c;调整平面拟合的迭代次数以及收敛条件。 使用RAN…

软件杯 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 人脸识别系统 该项目…

干掉5大阻碍,vivo X Fold3迈向折叠之外

兴奋,且焦虑。这是今年手机头部厂商普遍的双重心态。 很兴奋,高端手机特别是折叠屏手机的市场比例不断放大,这对于在科技上投入重金的头部厂商是利好;更大的利好是AI开启了智能手机的新产业周期,有望复刻当年从功能机跃升到智能手机的辉煌十年。 很焦虑,是因为技术越来越…

Win32堆的调试支持

堆检查、调试Win32堆的调试支持为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试。1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出。 2:释放检查(Heap Free Check)在释放堆块时进行检查,防止释放同一个堆块。 3…

实变函数第一次大作业

实变函数第一次大作业

如何选择适合自己企业的进销存软件?

全网最全&#xff1a;本篇全文2000&#xff0c;是我和团队十几年经验的完整总结&#xff0c;希望能帮助大家选择合适自己企业的进销存管理系统&#xff0c;建议收藏&#xff01; 全文主要内容&#xff1a; 进销存软件的四大血包选择进销存软件时&#xff0c;需要多维思考的原…

WPF绑定之道:为何选择属性而非字段,提升灵活性与可控性

概述:WPF支持绑定到对象的属性而不是字段,主要因为属性提供了更多控制和扩展性。属性包含get和set方法,支持数据验证和通知属性更改,而字段通常被认为是内部实现。使用属性使WPF能够更灵活、可控地与数据交互,提高代码的可读性和可维护性。 WPF(Windows Presentation Fou…

安装IK分词器 + 扩展词典配置 + 停用词典配置

安装IK分词器 1.在线安装ik插件&#xff08;较慢&#xff09; # 进入容器内部 docker exec -it elasticsearch /bin/bash ​ # 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elastics…

element-ui表单校验:有值却不通过 el-form validate

解决:新增/编辑赋值的时候,所有明明有值校验不通过的属性使用$set赋值this.$set(this.form, "属性名", "");// 新增置空 this.$set(this.form, "属性名", row.shuxing);// 编辑赋值

关于《完全手册Excel VBA典型实例大全——通过368个例子掌握》随书样例的下载

按照早先下载的电子教程查看和编写vba,有些例子使用运行错误,想着看看原始文件。容易看到,网上有提供的doc或者pdf文档,都不完整,可能是{完全手册Excel_VBA典型实例大全:通过368个例子掌握}.{doc,pdf}这样命名的,139页或者134页的样子。 搜索发现很多一些链接要么失效,…

简单的查看iPhone储存空间的几种方法,总有一种是你想要的

你的iPhone有多少GB的空间&#xff1f;下面是检查iPhone内存的方法。 需要检查iPhone的储存容量吗&#xff1f;你的iPhone储存容量&#xff08;通常是错误的内存&#xff09;以千兆字节&#xff08;GB&#xff09;为单位。这里有五种简单的方法来了解你的iPhone有多少空间。 …

【人工分析】 --定性分析

1、威胁分析:人工分析之定性分析

【定性分析】 --人工分析-1

1、威胁分析:人工分析之定性分析

Android14 新特性及变更

目录一、Android 14 基本信息1.2 迁移到Android14二、针对所有应用的变更2.1 字体缩放2.2 sdk 版本 >= 33 的变更2.2.1 默认拒绝设定精确的闹钟2.2.2 授予对照片和视频的部分访问权限2.3 上下文注册的广播会在应用缓存期间加入队列2.4 应用只能终止自己的后台进程2.5 最低可…

uni-app中web-view的使用

1. uni-app中web-view的使用 uni-app中的web-view是一个 web 浏览器组件&#xff0c;可以用来承载网页的容器&#xff0c;uni-app开发的app与web-view实现交互的方式相关简单&#xff0c;应用通过属性message绑定触发事件&#xff0c;然后在web-view的网页向应用 postMessage 触…