密码学概论

1.密码学的三大历史阶段:

  1. 第一阶段 古典密码学 依赖设备,主要特点 数据安全基于算法的保密,算法不公开,只要破译算法 密文就会被破解, 在1883年第一次提出 加密算法应该基于算法公开 不影响密文和秘钥的安全;衡量加密算法的安全 是所需要话费的时间,一般电脑需要300年才能破译 认为强度是安全的
  2. 第二阶段 计算机的出现 进入电子密码学阶段, 加密算法公开  主要特点:   数据安全基于秘钥安全 而不是算法的保密。衡量保密强度是破译的时间
  3. 第三阶段: 公钥密码使得 发送端和接收端无秘钥传输的保密通讯成为可能。

2.加解密的基础操作:

1. 置换:按照规则替换内容信息
  • 置换是用一个特定的值替换另一个特定值得过程
  • 置换需要通信双方事先通知置换的方法
  • 置换比较简单,频繁使用会找到规律
  • 上例中置换基础原则为: 基数未ASCII 码值加1, 偶数为 ASCII 码值加2
2. 移位:打乱字母的排列顺序
  • 移位 把某个字母以前或其后几位的某个特定字母替代
  • 移位具有规律,容易被攻破
3. 编码:ASCII编码    BASE64编码

3.加密算法分类

  • 密码设计的基本公理是 算法公开
  • 系统安全性仅依赖于  秘钥的保密性

    加密算法的分类:

  • 对称秘钥密码算法 (又称私有秘钥算法)
  • 非对称秘钥密码算法 (又称公钥密码算法)

   加密算法秘钥强度对比: 

4.对称加密算法 :

  • 使用同一秘钥进行加密解密
  • 优势 加解密速度快,密文是紧凑(密文和原文大小相差不大) 安全的
  • 缺点 秘钥分发,秘钥存储和管理  无法解决秘钥在传输、存储过程中的安全。缺乏对数字签名/不可否认的支持
  
著名对称加密算法:
     DES     3DES
  • DES 是一种块或分组加密算法 (Data Encryption Standard)
  • 20世纪70年代 IBM 公司发明
  • DES 秘钥固定 56bit太短  不安全(暴力破解),需要经常更换秘钥, 3DES 可解决秘钥短带来的安全性
  • DES 以块模式对 64bit 的源文块 进行操作
  • 使用 DES CBC模式(  IV 向量) 增加安全性,   3DES 秘钥放大3倍,168位 以提高安全性
   
ASE    (Advanced  Encrytion Standard)
  • 1997年颁布  用于取代 DES加密算法
  • 适合高速网络,适合在硬件上实现
  • 使用128位, 192位 或256位的秘钥块(还能以32bit 扩展)
  • 3DES 的替代加密方案, 硬件运行效率高  适用于无线、音视频加密

        

RC 系列 轻量级 速度块 对硬件要求低 (RC2, RC4,  RC5)这里主要讲下  RC4
  • Rivest 设计
  • 秘钥长度可变
  • 流模式加解密算法,面向bit 操作
  • 算法基于随机置换
  • RC4 应用范围广(https/WEP/WPA) WPA2-AES
➥ IDEA    国际数据加密算法
  • 分组长度64位, 秘钥长度128位
  • 设计原理: 来自不同代数群的 混合运算
    ➥ 异或
    ➥ 模216加
    ➥ 模216 + 1 乘
➥ CASR
➥ Blowfish
  • Bruce Schneier 设计
  • 秘钥长度可变
  • 易于软件快速实现, 所需存储控件不到5KB
  • 安全性可以通过改变秘钥长度进行调整
  • 适用于秘钥不经常改变的加密
  • 不适用于需要经常交换秘钥的情况

5. 公钥加密算法(非对称加密算法) :

  • 公钥加密比私钥出现的晚
  • 私钥加密使用同一个秘钥来加密和解密信息
  • 私钥可以生成公钥,私钥加密公钥解密;公钥加密私钥解密
  • 公钥加密使用两个秘钥,一个秘钥用来加密信息,另外一个用来解密信息
  • 应用: 公钥加密 保密性, 私钥签名 数字签名

  •  优点:私钥不用 存储/传输 公钥可传输,可以保证秘钥在传输过程中的安全。
  •  缺点:加密相对速度慢,密文不紧凑 , 可以和对称加密 相互配合使用
 常用的公钥加密算法:

➥ RSA  最主流的公钥加密算法

  • 1977年由  Ron Rivest,  Adi Shamir  和 Len Adelman 开发
  • 专利于2000年9月到期
  • 秘钥长度在512 - 8192 bit 之间
  • 安全性基于 大素数因子分解的困难性
  • RSA 比用软件实现的DES慢 100倍
  • RSA 比用硬件实现的DES慢 1000倍
  • RSA 的主要用途: 解码 数字签名和密钥交换(加密散列 秘钥)

➥ HD (Diffie-Hellman)

  • 1976年  Whitfield Diffie 和 Martin Hellman 发明
  • 解决对称加密系统中的秘钥的 发布问题
  • 无需使用代价高昂既可对秘钥达成共识
  • 安全性来基于 很难计算出 很大的离散对数
  • 现在秘钥管理中提供其他算法的秘钥管理

➥ DSA

➥ ECC  区块链中的 椭圆加密算法

  • 1985年提出
  • 原理:给定椭圆曲线上的两个点 A和B, 如A = kB,要找到整数 k非常困难
  • 秘钥更小: 与1024位和RSA秘钥具有同样的安全性的  秘钥只有 160位

公钥加密算法常见的应用:
  • 加密&解密
  • 数字签名:发送方用自己的私钥签署报文, 接收方用对方的公钥验证对方的签名
  • 秘钥交换:双方协商回话秘钥

6. 数字签名 : 

➥ RSA  提供认证和抗抵赖性(私钥签名)

➥ 数字签名 Digital Signature

7. 数字证书与CA  

CA(Certificate Authority, 电子商务认证授权机构 ) 解决签名认证问题,类似身份证颁发机构

8. 哈希与HMAC

哈希 Hash(也叫散列函数), 常用的有:MD5  SHA

  • 将一段数据(任意长度)经过计算,  转化为一段 定长的数据
  • 不可逆性  几乎无法通过Hash 结果推导出原文,既无法通过 x 的 hash 推导出 x
  • 无碰撞性   几乎没有可能找到一个 y, 使得 y的 Hash 值等于x的 hash值
  • 雪崩效应   输入轻微变化  Hash 输出值 产生巨大变化
  • 单向          不可能从散列值推出原始数据
  • 使用场景
    1.发布文件的完整性验证  篡改, 如金融类软件  MD5
    2.服务器中保存用户密码
    3.数据签名

 感谢大佬分享 整理来自==》:01 密码学概述_哔哩哔哩_bilibili

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

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

相关文章

添加一个仅管理员可见的页面

例如我新加一个页面 申请一个路由 《插播》 前端是如何知道我们是管理员的呢,ant-design框架会帮我们存到InitialState里,做为全局变量 在access.ts里我们获取到了用户是否为管理员 (用户存在且为管理员) 框架为我们打通了个路由…

JADE盲分离算法仿真

JADE算法原理 JADE 算法首先通过去均值预白化等预处理过程得到解相关的混合信号,预处理后的信号构建的协方差矩阵变为单位阵,为后续的联合对角化奠定基础;其次,通过建立四阶累积量矩阵,利用高阶累积量的统计独立性等性…

uniapp获取一周日期和星期

UniApp可以使用JavaScript中的Date对象来获取当前日期和星期几。以下是一个示例代码,可以获取当前日期和星期几,并输出在一周内的每天早上和晚上: // 获取当前日期和星期 let date new Date(); let weekdays ["Sunday", "M…

Android Aidl跨进程通讯(四)--接口回调,服务端向客户端发送数据

学更好的别人, 做更好的自己。 ——《微卡智享》 本文长度为3325字,预计阅读9分钟 前言 前几篇介绍了AIDL通讯的基础,进阶和异常捕获,本篇就来看看服务端怎么向客户端来实现发送消息。 实现服务端往客户端发送消息,主要…

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

爬虫框架Scrapy学习笔记-1

前言 在现代互联网时代,网页数据获取和处理已经成为了重要的技能之一。无论是为了获取信息、做市场研究,还是进行数据分析,掌握网页爬取和数据处理技术都是非常有用的。本文将介绍从网页加载到数据存储的完整过程,包括网络请求、…

(手撕)数据结构--->堆

文章内容 目录 一:堆的相关概念与结构 二:堆的代码实现与重要接口代码讲解 让我们一起来学习:一种特殊的数据结构吧!!!! 一:堆的相关概念与结构 在前面我们已经简单的学习过了二叉树的链式存储结…

Linux Day17 生产者消费者

一、生产者消费者问题概述 生产者 / 消费者问题,也被称作有限缓冲问题。两个或者更多的线程共享同一个缓冲 区,其中一个或多个线程作为 “ 生产者 ” 会不断地向缓冲区中添加数据,另一个或者多个线程作为 “ 消费者 ” 从缓冲区中取走数据。…

【MySQL系列】- MySQL自动备份详解

【MySQL系列】- MySQL自动备份详解 文章目录 【MySQL系列】- MySQL自动备份详解一、需求背景二、Windows mysql自动备份方法2.1 复制date文件夹备份实验备份环境创建bat直接备份脚本 2 .2 mysqldump备份成sql文件创建mysqldump备份脚本 2 .3 利用WinRAR对MySQL数据库进行定时备…

【每日一题】154. 寻找旋转排序数组中的最小值 II

154. 寻找旋转排序数组中的最小值 II - 力扣(LeetCode) 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,4,4,5,6,7] 在变化后可能得到&#xff1…

基于SSM的智慧城市实验室主页系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

linux学习实操计划0103-安装软件

本系列内容全部给基于Ubuntu操作系统。 系统版本:#32~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 18 10:40:13 UTC 1 安装deb格式软件 Debian包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成。 处理这些包的经典程序是…

git基本手册

Git and GitHub for Beginners Tutorial - YouTube Kevin Stratvert git config --global user.name “xxx” git config --global user.email xxxxx.com 设置默认分支 git config --global init.default branch main git config -h查看帮助 详细帮助 git help config 清除 cl…

vue国际化教程

需求背景 项目需求要做国际化,结果网上找了好几篇文章,没有一个可以一次性搞定,现在这里总结一下。首先,我们分为两部分处理,一个是前端页面的静态文字,这个由前端vue.json自行处理。第二部分就是后端的错…

《计算机视觉中的多视图几何》笔记(5)

5 Algorithm Evaluation and Error Analysis 本章主要讲述对算法的验证和误差分析。 概述了两种计算这种不确定性(协方差)的方法。第一个基于线性近似值,涉及串联各种雅各布表达式,第二个是更容易实施蒙特卡洛方法。 文章目录 …

Pytorch面试题整理(2023.09.10)

1、pytorch如何微调fine tuning? 在加载了预训练模型参数之后,需要finetuning 模型,可以使用不同方式finetune。 局部微调:加载了模型参数后,只想调节最后几层,其他层不训练,也就是不进行梯度…

从命令行管理文件(二)

1.数据流和重定向 1.2数据流 标准输入 (standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入 标准输出(standard output,简称stdout): 默认情况下,命令执行所回传正确的信息会输出到屏幕上 标准错误输出(standard …

Ui自动化测试上传文件方法都在这里了

前言 实施UI自动化测试的时候,经常会遇见上传文件的操作,那么对于上传文件你知道几种方法呢?今天我们就总结一下几种常用的上传文件的方法,并分析一下每个方法的优点和缺点以及哪种方法效率,稳定性更高 被测HTML代码…

【计算机基础】Git系列2:配置多个SSH

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

大数据课程L7——网站流量项目的操作步骤

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解网站流量项目的Spark与HBase整合; ⚪ 掌握网站流量项目的实时流业务处理; 一、 Spark 与 HBase 整合基础 1. 实现步骤: 1. 启动…