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

终极CH55xduino指南:5分钟构建低成本USB微控制器项目

终极CH55xduino指南&#xff1a;5分钟构建低成本USB微控制器项目 【免费下载链接】ch55xduino An Arduino-like programming API for the CH55X 项目地址: https://gitcode.com/gh_mirrors/ch/ch55xduino CH55xduino为CH55X系列低成本MCS51 USB微控制器提供了完整的Ardu…...

告别手动写测试报告:用AI自动生成可视化测试总结

测试报告的价值困境与破局在软件交付的最后关头&#xff0c;测试报告往往陷入一种尴尬的境地。一方面是倒计时的上线压力&#xff0c;另一方面是堆积如山的测试数据。许多测试工程师都有过这样的经历&#xff1a;打开Excel&#xff0c;机械地复制用例执行数、通过率、缺陷数&am…...

私有化多用户AI代码助手:基于开源LLM的部署与协作实践

1. 项目概述&#xff1a;一个面向多用户的代码助手开源项目最近在逛GitHub的时候&#xff0c;发现了一个挺有意思的项目&#xff0c;叫openclaw-multiuser。光看名字&#xff0c;你可能会有点懵&#xff0c;“openclaw”是啥&#xff1f;“多用户”又是指什么&#xff1f;简单来…...

MLIR编译器技术:分层IR设计与AI加速实践

1. MLIR与编译器技术概述 编译器技术作为计算机科学的基础设施&#xff0c;长期以来扮演着将高级语言转换为机器码的关键角色。传统编译器如GCC、LLVM采用固定层次的中间表示&#xff08;IR&#xff09;&#xff0c;这在通用计算时代表现良好。但随着AI和高性能计算领域对异构硬…...

Java后端开发德州扑克小酒馆小程序架构与源码解析

德州扑克小酒馆小程序的核心价值&#xff0c;在于依托休闲娱乐场景实现小酒馆线下引流&#xff0c;其Java后端的架构设计与源码实现&#xff0c;直接决定小程序的稳定性、可扩展性与合规性。 一、架构设计核心原则&#xff08;贴合场景&#xff0c;合规优先&#xff09; 德州…...

3步开启游戏自动化革命:智能助手解放你的游戏时间

3步开启游戏自动化革命&#xff1a;智能助手解放你的游戏时间 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode…...

SOCD Cleaner终极指南:告别游戏输入冲突,开启精准操作新时代

SOCD Cleaner终极指南&#xff1a;告别游戏输入冲突&#xff0c;开启精准操作新时代 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在《街头霸王6》中因为同时按下左右方向键而错失连招机会&#xff1…...

服务器电源线选购全攻略

5选服务器电源线&#xff0c;接口匹配、电流承载、安全认证、线缆长度、线材材质五大要点缺一不可&#xff0c;劣质线材容易过载发热、烧毁设备&#xff0c;严重还会引发火灾&#xff0c;机房布线一定要选用靠谱的睿阜高品质电源线。先对接口&#xff1a;物理适配是第一关键&am…...

ARM核心板在POCT设备开发中的选型与应用实战

1. 项目概述&#xff1a;ARM核心板如何重塑POCT设备开发在医疗设备这个对稳定性和可靠性要求近乎苛刻的领域&#xff0c;每一次技术选型都像是一次精密的手术&#xff0c;容不得半点闪失。我接触过不少体外诊断&#xff08;IVD&#xff09;设备厂商&#xff0c;尤其是做即时检验…...

Python篇---常考的数据类型

一、常见数据类型及其特点Python 的数据类型可以分两大类&#xff1a;不可变类型和可变类型。这个区分是很多考点的基础。1. 不可变类型&#xff08;值变了&#xff0c;对象就换了&#xff09;整数 int特点&#xff1a;精度无限&#xff0c;只有整数不分长短。适合大数运算。考…...