架构设计-如何安全地传输密码
java web 项目中经常会遇到登录或注册的场景,如果查看浏览器的 network 网络请求时,用户的密码以明文方式传输,会造成很多安全隐患,这就涉及到密码如何安全传输的问题。
数据加密的重要性不言而喻,通用的加密技术有 哈希散列、对称加密、非对称加密。
哈希散列
哈希散列是通用意义上的加密技术。定义:通过几乎不可逆的哈希算法将明文内容转换成散列后的密文内容。攻击者几乎不可能通过密文猜测到对应的明文内容。典型的是 md5 算法。md5 算法有非常大的风险:对于弱口令的攻击容易被破解。攻击者可以通过常用弱口令的密文表,通过暴力破解的方式猜测试密码。
对称加密
典型的算法:AES DES 。适用于服务器之间的数据交互。
通信双方约定相同的对称加密密钥,依赖于共享的密钥进行加密解密。客户端使用密钥加密信息后传输给服务端,服务端通过密钥解密后获得明文。因为密钥不同,即便是弱口令,攻击者也无法通过暴力破解获得密码。此方法存在的问题是:密钥只能保存到服务器端,因为如果密钥保存在客户端,数据直接在客户端加密,就等于将加密算法和密钥全部暴露出来。
非对称加密
典型算法:RSA 算法。非对称加密算法使用2个密钥(公钥、私钥)进行加密和解密,加密密钥可以公开(使用公开密钥加密),解密密钥需要保密。非对称加密从根本上克服了传统密码在密钥分配上的困难。算法原理:将2个素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积分开作为加密密钥。使用 RSA 密码可同时实现数字签名和数字加密。
使用非对称加密解密的服务通信过程如下:
客户端在连接建立之初就获得服务器端的公钥;
<相关文章:
架构设计-如何安全地传输密码
java web 项目中经常会遇到登录或注册的场景,如果查看浏览器的 network 网络请求时,用户的密码以明文方式传输,会造成很多安全隐患,这就涉及到密码如何安全传输的问题。 数据加密的重要性不言而喻,通用的加密技术有 哈希散列、对称加密、非对称加密。 哈希散列 哈希散列是…...
【库】nprogress 顶部进度条
yarn add nprogress router文件 前置路由添加启动 后置路由添加关闭 router.beforeEach((to, from, next) > { NProgress.start() next() }) router.afterEach(() > { NProgress.done() }) App.vue 文件 引入样式 <script setup> import "nprogress/npro…...
15、架构-可靠通讯之服务安全
概述 我们已经了解了与具体架构形式无关的业界主流安全概念和技术标准(如TLS、JWT、OAuth 2等概念),在上一章节探讨了与微服务运作特点相适应的零信任安全模型。在本节中,我们将从实践和编码的角度出发,介绍在微服务时…...
web刷题记录(5)
[羊城杯 2020]easycon 进来以后就是一个默认测试页面, 在这种默认界面里,我觉得一般不会有什么注入点之类的,所以这里先选择用御剑扫扫目录看看有没有什么存在关键信息的页面 扫了一半发现,很多都是和index.php文件有关࿰…...
Redis高并发高可用
1. 复制机制 在分布式系统中,为了解决单点问题,通常会将数据复制多个副本部署到其他机器,以满足故障恢复和负载均衡等需求。Redis提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,后面的…...
【前端取不到cookie的的原因】http-only
某条cookie有http-only属性时,下面两种方法都取不到,还是改需求吧,别取了 1、 npm install js-cookie --save import Cookies from js-cookie let cookieValue Cookies.get(name)2、document.cookie...
推荐 2 个 火火火火 的开源项目
推荐两个开源项目,一个能让你的小爱音响更聪明。另外一个可以让你简单的下载互联网网站上的视频、文件、富文本内容。 01 MiGPT: 让你的小爱音响更聪明 让你的小爱音箱更聪明,提高智能家居的互动性和个性化体验的开源利器! MiGPT 将 ChatGPT …...
从0到100:找搭子小程序开发笔记(一)
背景调查 “找搭子”小程序:能够解决人们在社交、休闲和约会方面的需求,提供方便快捷的方式来找到合适的伴侣或活动伙伴。许多人在社交场合中感到焦虑或不安,因此他们更倾向于使用在线平台来认识新的朋友或搭子。有些人可能生活在一个较小或…...
迷宫最短路径求解--c++
【代码】 #include<iostream> #include<queue> #include<stack> using namespace std; #define ROW 8 #define COL 8 //测试迷宫数据 int maze[ROW][COL] {{0,0,0,1,0,0,0,0},{0,1,0,1,0,1,0,1},{0,1,0,0,0,1,0,1},{0,1,0,1,1,1,0,1},{0,1,0,1,1,0,0,0},{0…...
SpringFramework总结
一.SpringFramework介绍 (一)Spring 广义上的 Spring 泛指以 Spring Framework 为基础的 Spring 技术栈。 Spring 已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Frame…...
品牌与产品:消费者决策的经济逻辑与品牌宣传的战略意义
在当今日益全球化的经济环境中,品牌与产品之间的关系对于企业的成功与否起着至关重要的作用。然而,在消费者做出购买决策时,他们到底是在选择产品本身,还是在选择附着在产品之上的品牌价值?同样,当客户选择…...
MFC四种方法编写多线程
本文以四个demo为例,对MFC的多线程进行学习。学习的过程中写了四个demo,将其做成笔记,发布在csdn上面。 mfc多线程demo1 volatile BOOL m_bRun; CEdit* edit; void ThreadFunc(){CTime time;CString strTime;m_bRun true;while(m_bRun){ti…...
VPN简介
一、VPN 概念定义 VPN,即虚拟专用网络(Virtual Private Network),依靠ISP(Internet Service Provider)和NSP(Network Service Provider)在公共网络中建立的虚拟专用通信网络&#x…...
【C/C++】用C语言写一个数据仓库,存储和修改数据
这个代码实现了一个简单的数据仓库,其中数据被存储在一个3x3的二维数组中。用户可以通过控制台界面与这个数据仓库进行交互,可以选择查看数据或者修改数据。 基础版源码: #include <stdio.h>#define HOUSESIZE 3 int arr[HOUSESIZE][…...
YOLO v5与YOLO v8框图比较
1. 介绍 YOLO (You Only Look Once) 是一个用于目标检测的卷积神经网络模型,以其高精度、高速度和易用性著称。YOLO v5 是目前最流行的 YOLO 版本之一,而 YOLO v8 是 YOLO 的最新版本。 2. 原理详解 YOLO 系列模型的基本原理是将目标检测任务转化为图…...
Redis集群(5)
集群原理 节点通信 通信流程 在分布式存储系统中,维护节点元数据(如节点负责的数据、节点的故障状态等)是关键任务。常见的元数据维护方式分为集中式和P2P方式。Redis集群采用P2P的Gossip协议,这种协议的工作原理是节点之间不断…...
STM32H5 DAC 配置
STM32 H5 DAC的详细初始化过程可以分为以下几个步骤,以下是根据参考文章和相关资料整理的具体步骤和参数设置: 1、使能相关时钟: 使能GPIOA(或其他对应DAC输出引脚的GPIO端口)的时钟。这通常是通过调用RCC_APB2Perip…...
第十九节:暴力递归到动态规划
一 动画规划的概念 优化出现重复解的递归 一旦写出递归来,改动态规划就很快 尝试策略和状态转移方程是一码事 学会尝试是攻克动态规划最本质的能力 如果你发现你有重复调用的过程,动态规划在算过一次之后把答案记下来,下回在越到重复调用过程…...
服务器部署spring项目jar包使用bat文件,省略每次输入java -jar了
echo off set pathC:\Program Files\Java\jre1.8.0_191\bin START "YiXiangZhengHe-8516" "%path%/java" -Xdebug -jar -Dspring.profiles.activeprod -Dserver.port8516 YiXiangZhengHe-0.0.1-SNAPSHOT.jar 将set path后面改成jre的bin文件夹 START 后…...
2024备忘知识点
1. adb shell dumpsys package f |grep fin 过滤查找指纹服务 1. adsp write /sys/kernel/boot_adsp/boot 1 Please change replace dev_dbg into dev_err in kernel file adsp-loader.c. Then check whether "write /sys/kernel/boot_adsp/…...
Vue.Draggable深度解析:源码实现与高级应用实战
Vue.Draggable深度解析:源码实现与高级应用实战 【免费下载链接】Vue.Draggable SortableJS/Vue.Draggable: Vue.Draggable 是 Sortable.js 的 Vue.js 封装组件,提供了拖放排序功能,可以在 Vue 应用中轻松实现列表元素的可拖拽重排。 项目地…...
刷题无效、偏科严重?脑能模型解构 K12 学习底层能力问题
一、问题定义:K12 学习低效的核心并非知识缺口,而是大脑能力结构断链在 K12 家庭教育场景中,刷题耗时但效率无提升、偏科补学却差距扩大、孩子拖延喊不动、学习焦虑厌学等问题成为普遍痛点,多数家长将其归因于孩子智商、天赋或学习…...
ROS MoveIt笛卡尔路径规划速度上不去?手把手教你三种提速方案(附Python/C++代码对比)
ROS MoveIt笛卡尔路径规划速度优化实战:3种高效提速方案详解 在工业机器人执行高精度任务时,笛卡尔空间路径规划的速度瓶颈常常让开发者头疼。想象一下,当你的机械臂正在进行3D打印或精密焊接时,末端执行器突然以龟速移动——这不…...
Vision Transformers在密集预测任务中的创新应用与性能优化
1. Vision Transformers如何革新密集预测任务 第一次接触Vision Transformers(ViT)时,我完全被它的设计哲学震撼到了。传统的CNN在处理图像时,就像用固定大小的网格去观察世界,而ViT则像是一个拥有"全局视野"…...
AMD显卡也能玩转GPU编程?ROCm环境搭建与OpenCL入门避坑指南
AMD显卡也能玩转GPU编程?ROCm环境搭建与OpenCL入门避坑指南 在GPU计算领域,NVIDIA的CUDA生态长期占据主导地位,但AMD显卡用户同样拥有强大的并行计算选择。本文将带你探索AMD ROCm平台的完整搭建流程,并深入OpenCL编程的核心技巧&…...
高效批处理:一键复制文件/文件夹至当前目录所有子文件夹
1. 为什么需要批量复制文件到子文件夹? 在日常工作中,我经常遇到这样的场景:需要把一个重要文件快速分发到几十甚至上百个子文件夹中。比如给每个项目文件夹添加一份新的规范文档,或者为所有客户目录更新同一份合同模板。手动操作…...
从游戏排行榜到实时榜单:手把手用无旋Treap(Fhq Treap)实现一个高性能排名系统
从游戏排行榜到实时榜单:手把手用无旋Treap(Fhq Treap)实现一个高性能排名系统 在当今的互联网应用中,实时排名系统无处不在——从游戏中的玩家战力榜,到直播平台的礼物贡献榜,再到电商的热销商品排行。这些…...
暴力检测新思路:如何用HL-Net和弱监督技术提升多模态识别准确率?
多模态暴力检测技术革新:HL-Net与弱监督学习的实战解析 暴力行为检测一直是计算机视觉和音频分析领域的重要挑战。传统的暴力检测方法往往受限于单一模态输入、高昂的标注成本以及有限的场景适应性。本文将深入探讨如何通过HL-Net架构和弱监督学习技术,构…...
市场比较好的显示屏模块供货商哪家强
市场比较好的显示屏模块供货商推荐在显示屏模块市场,众多企业各展所长,为不同行业提供着优质的产品。以下为您介绍十家市场上表现出色的显示屏模块供货商:杭州斡能电子有限公司(杭州斡能) 杭州斡能始创于2008年10月&am…...
OpenClaw安全实践:Qwen3-VL:30B本地化+飞书权限管控
OpenClaw安全实践:Qwen3-VL:30B本地化飞书权限管控 1. 为什么需要安全自动化 去年我接手了一个棘手的任务:团队每周需要从上百份PDF报告中提取关键数据,整理成统一格式的Excel表格。手动操作不仅耗时,还容易出错。当我尝试用Pyt…...
