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

对称/非对称加密

对称加密和非对称加密是两种主要的加密方式,用于保护数据的机密性和完整性。它们在密钥的使用和管理上有着显著的不同。

对称加密

原理

对称加密(Symmetric Encryption)使用相同的密钥进行加密和解密。这意味着发送方和接收方必须共享相同的密钥。其加密和解密过程可以简单描述如下:

  1. 加密过程

    • 明文(Plaintext)通过对称加密算法和密钥(Key)进行处理,生成密文(Ciphertext)。
    • 公式:Ciphertext = Encrypt(Plaintext, Key)
  2. 解密过程

    • 密文通过相同的对称加密算法和密钥进行处理,还原为明文。
    • 公式:Plaintext = Decrypt(Ciphertext, Key)
常见的对称加密算法
  • DES(Data Encryption Standard):一种早期的对称加密算法,使用56位密钥。
  • AES(Advanced Encryption Standard):一种现代对称加密算法,支持128位、192位和256位密钥长度。
  • 3DES(Triple DES):DES的增强版,通过三次加密提高安全性。

非对称加密

原理

非对称加密(Asymmetric Encryption)使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥用于加密,私钥用于解密。加密和解密过程如下:

  1. 加密过程

    • 发送方使用接收方的公钥对明文进行加密,生成密文。
    • 公式:Ciphertext = Encrypt(Plaintext, Public Key)
  2. 解密过程

    • 接收方使用自己的私钥对密文进行解密,还原为明文。
    • 公式:Plaintext = Decrypt(Ciphertext, Private Key)

这种方法解决了密钥分发的问题,因为公钥可以公开,只有私钥需要保密。

常见的非对称加密算法
  • RSA(Rivest-Shamir-Adleman):一种常见的非对称加密算法,基于大整数因子分解的困难性。
  • ECC(Elliptic Curve Cryptography):一种基于椭圆曲线数学的非对称加密算法,提供与RSA相同安全级别的同时使用更短的密钥。

对称加密和非对称加密的比较

  • 速度:对称加密通常比非对称加密更快,适合处理大量数据。
  • 密钥管理:对称加密需要安全地共享密钥,而非对称加密通过公钥和私钥的分离简化了密钥管理。
  • 应用场景
    • 对称加密常用于数据的批量加密,如文件加密和数据库加密。
    • 非对称加密常用于密钥交换和数字签名。

这两种加密方式各有优劣,常常在实际应用中结合使用。例如,在SSL/TLS协议中,非对称加密用于密钥交换,而对称加密用于数据传输。


盐值

在加解密过程中,**盐值(Salt)**是一种用于增强密码安全性的技术,特别是在密码哈希和存储中广泛使用。盐值的作用主要体现在以下几个方面:

盐值的定义

盐值是一个随机生成的字符串,在对密码进行哈希处理之前,将其与密码组合在一起。这个组合后的字符串再通过哈希函数生成最终的哈希值。盐值通常是唯一的,并且在每次用户注册或密码变更时生成不同的盐值。

盐值的作用

  1. 防止彩虹表攻击

    • 彩虹表攻击是一种通过预计算大量可能的哈希值并存储在表中来快速破解密码的方法。因为常用密码(如“123456”)的哈希值是固定的,攻击者可以使用预先计算好的哈希值直接找到原密码。
    • 加入盐值后,即使多个用户使用相同的密码,由于每个用户的盐值不同,最终生成的哈希值也不同,从而防止了彩虹表攻击。
  2. 增加哈希值的复杂性

    • 盐值增加了密码的长度和复杂性,使得简单密码变得更加难以猜测。
    • 这也意味着攻击者在试图进行暴力破解时,需要为每个不同的盐值和密码组合计算哈希值,大大增加了破解难度和时间。
  3. 防止相同密码产生相同哈希值

    • 如果没有盐值,相同的密码将生成相同的哈希值。攻击者可以通过比较哈希值,找出使用相同密码的账户。
    • 盐值确保即使密码相同,由于盐值不同,最终生成的哈希值也不同,从而保护用户的隐私。

盐值的使用过程

  1. 生成盐值

    • 在用户设置或更改密码时,生成一个随机的盐值。这个盐值的长度和复杂度应足够大,以保证其唯一性和安全性。
  2. 组合密码和盐值

    • 将生成的盐值与用户输入的密码组合在一起。通常是将盐值附加在密码的前面或后面,或通过其他定义的方式进行组合。
  3. 计算哈希值

    • 对组合后的字符串进行哈希处理,生成最终的哈希值。
  4. 存储哈希值和盐值

    • 将生成的哈希值和盐值存储在数据库中。注意,盐值不需要保密,可以明文存储,因为它的作用主要在于防止攻击者轻易破解密码。

示例代码

下面是一个简单的示例代码,展示了如何使用盐值进行密码哈希处理:

import hashlib
import os# 生成随机盐值
def generate_salt():return os.urandom(16)  # 生成16字节的随机盐值# 生成密码哈希
def hash_password(password, salt):# 将盐值与密码组合salted_password = salt + password.encode('utf-8')# 使用SHA-256哈希算法生成哈希值return hashlib.sha256(salted_password).hexdigest()# 示例
password = "my_secure_password"
salt = generate_salt()
hashed_password = hash_password(password, salt)print("Salt:", salt.hex())
print("Hashed Password:", hashed_password)

在上述示例中,盐值通过os.urandom()生成,并与密码组合后使用SHA-256进行哈希处理。最终生成的哈希值和盐值可以存储在数据库中。

总结

盐值在加解密过程中,特别是在密码哈希处理中,起到了增强安全性的作用。它通过增加密码哈希的复杂性,防止彩虹表攻击和暴力破解,使得密码存储更加安全。

相关文章:

对称/非对称加密

对称加密和非对称加密是两种主要的加密方式,用于保护数据的机密性和完整性。它们在密钥的使用和管理上有着显著的不同。 对称加密 原理 对称加密(Symmetric Encryption)使用相同的密钥进行加密和解密。这意味着发送方和接收方必须共享相同…...

DDei在线设计器-API-DDeiSheet

DDeiSheet DDeiSheet是代表一个页签,一个页签含有一个DDeiStage用于显示图形。   DDeiSheet实例包含了一个页签的所有数据,在获取后可以通过它访问其他内容。DDeiFile中的sheets属性记录了当前文件的页签列表。 一个DDeiFile实例至少包含一个DDeiSheet…...

随想录 Day 69 并查集 107. 寻找存在的路径

随想录 Day 69 并查集 107. 寻找存在的路径 理论基础 int n 1005; // n根据题目中节点数量而定&#xff0c;一般比节点数量大一点就好 vector<int> father vector<int> (n, 0); // C里的一种数组结构// 并查集初始化 void init() {for (int i 0; i < n; i)…...

Hi3861 OpenHarmony嵌入式应用入门--LiteOS Mutex

CMSIS 2.0接口中的Mutex&#xff08;互斥锁&#xff09;是用于在多线程环境中保护共享资源的访问机制。Mutex&#xff08;互斥锁&#xff09;是一种特殊的信号量&#xff0c;用于确保同一时间只有一个线程可以访问特定的共享资源。 在嵌入式系统或多线程应用中&#xff0c;当多…...

使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集

文章目录 一、什么是“软件I2C”和“硬件I2C”1.1 什么是“软件I2C”1.2 什么是“硬件I2C” 二、软件I2C和硬件I2C2.1 软件模拟2.2硬件I2C 三、配置STM32CubeMX四、配置keil代码4.1 创建文件4.2 复制文件4.3 在keil中添加文件4.4 添加路径4.5 代码修改 五、硬件连接六、总结 一…...

Huffman树——AcWing 148. 合并果子

目录 Huffman树 定义 运用情况 注意事项 解题思路 AcWing 148. 合并果子 题目描述 运行代码 代码思路 其它代码 代码思路 Huffman树 定义 它是一种最优二叉树。通过构建带权路径长度最小的二叉树&#xff0c;经常用于数据压缩等领域。 运用情况 在数据压缩中&a…...

05 Pytorch 数据读取 + 二分类模型

05 Pytorch 数据读取 二分类模型05 Pytorch 数据读取 二分类模型05 Pytorch 数据读取 二分类模型 01 数据读取 DataLoader&#xff08;set作为参数&#xff09; 02 Dataset 从哪读&#xff0c;怎么读&#xff1f; 功能&#xff1a;数据从哪里读取&#xff1f; 如何读取…...

数据仓库之Kappa架构

Kappa架构是一种简化的数据处理架构&#xff0c;旨在处理实时数据流&#xff0c;解决传统Lambda架构中批处理和实时处理的复杂性。Kappa架构完全基于流处理&#xff0c;不区分批处理和实时处理&#xff0c;所有数据都是通过流处理系统进行处理。以下是对Kappa架构的详细介绍&am…...

ReactNative进阶(二十八)Metro

文章目录 一、前言二、Metro生命周期2.1 解析(Resolution)2.2 转换(Transformation)2.3 序列化(Serialization) 三、拓展阅读 一、前言 众所周知&#xff0c;Metro 是 React Native 默认的 JavaScript 打包模块。对于前端项目&#xff0c;打包工具已有webpack(大而全&#xff…...

python爬虫入门到精通路线

当谈及Python爬虫从入门到精通的路线时&#xff0c;我们可以将其分为几个关键阶段&#xff0c;每个阶段都有其特定的学习目标和内容。以下是一个清晰的路线规划&#xff1a; 1. 入门阶段 基础知识 学习Python的基础语法、数据类型、控制流等。了解基本的网络协议&#xff08…...

Java 笔记:常见正则使用

文章目录 Java 笔记&#xff1a;常见正则使用正则简介常用匹配年月日的时间匹配手机号码校验 参考文章 Java 笔记&#xff1a;常见正则使用 正则简介 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言&#xff0c;但…...

vue 2.0项目中使用tinymce富文本框遇到的问题

安装Tinymce 现在tinymce-vue最新版本是4.0&#xff0c;用的vue3.0的了&#xff0c;所以搭建的vue2.0项目要使用之前的版本 ( 安装指定版本 ). 首先安装tinymce的vue组件&#xff0c;因为没有注册服务 npm install tinymce/tinymce-vue2.0.0 -S接着安装tinymce: npm install…...

【STM32+FPGA】先进算力+强安全+边缘AI,64位STM32MP2聚焦工业4.0应用

工业应用数字化和智能化程度&#xff0c;是衡量新质生产力的重要标准。STM32最新一代64位微处理器STM32MP2凭借先进算力、丰富接口和高安全性&#xff0c;为高性能和高度互联的工业4.0应用赋能。 STM32MP2四大关键特性&#xff0c;为工业4.0应用赋能 STM32MP2系列的第一颗产品S…...

Git 和 TortoiseGit 安装和配置(图文详解)

使用git&#xff0c;需要在Windows上需要安装两个软件&#xff1a;1&#xff09;Git 2&#xff09;TortoiseGit 若需要&#xff0c;可以下载TortoiseGit汉化语言包。 注意&#xff1a;tortoiseGit是在安装了Git的基础上运行的&#xff0c;所以需要先安装Git&#xff0c;后安装…...

OpenAI CTO谈GPT-5将达博士生智力水平;斯坦福评估排名前十两款来自中国

&#x1f989; AI新闻 &#x1f680; OpenAI CTO谈GPT-5将达博士生智力水平 摘要&#xff1a;美国达特茅斯工程学院采访了OpenAI首席技术官米拉・穆拉蒂&#xff0c;她表示GPT-4的智力相当于高中生&#xff0c;而GPT-5将在一年半后发布&#xff0c;预计达到博士生水平。穆拉蒂…...

焦化超低排平台组成部分

焦化行业作为重工业的重要组成部分&#xff0c;其环保问题一直备受关注。近年来&#xff0c;随着环保意识的提升和技术的不断进步&#xff0c;朗观视觉焦化超低排平台应运而生&#xff0c;成为推动焦化行业绿色发展的重要力量。本文将深入剖析焦化超低排平台的组成部分&#xf…...

鸿蒙 navigation路由跳转,页面struct 下的生命周期、onShow、onHidden等不会触发问题

经常用安卓思维考虑问题&#xff0c;用习惯了Router方式跳转&#xff0c;但是官方推荐用 navigation&#xff0c;当然它有它的有点&#xff0c; 也有小瑕疵&#xff0c;用了api11 后 发现 navigation路由跳转 &#xff0c;只要被它包裹的跳转到下页面的&#xff0c;有些生命周期…...

BUUCTF [CISCN2019 华北赛区 Day2 Web1] Hack World

1、通过题目&#xff0c;可以知道该题目为SQL注入类型&#xff1a; 2、判断注入类型为数字注入&#xff1a; 3、通过BP抓包&#xff0c;来判断注入点。 字典爆破发现常规的注入方式都被过滤。 4、因此可以尝试通过布尔盲注的方式来得到flag。编写脚本得到flag import requests…...

wsl2平台鸿蒙全仓docker编译环境快速创建方法

文章目录 1 文章适用范围&#xff1a;2 WSL环境安装3 镜像迁移非C盘4 Docker环境准备4.1 docker用户组和用户创建4.2 Docker环境配置4.2.1 Ubuntu下安装docker工具4.2.2 鸿蒙Docker环境安装4.2.3 鸿蒙全仓代码拉取编译 5 鸿蒙全仓代码的更新策略6 参考文献7 FAQ7.1 缺头文件xcr…...

商业秘密侵权

一、商业秘密侵权行为 &#xff08;一&#xff09;员工违规获取并使用企业后台用户行为数据构成商业秘密侵权 &#xff08;二&#xff09;离职员工将新单位“冒名顶替”为原单位构成对原单位商业秘密的侵犯 二、商业秘密侵权主体 &#xff08;一&#xff09;主体范围界定&a…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

什么是EULA和DPA

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

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...