当前位置: 首页 > 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…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

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 …...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...