SecureRandom.getInstanceStrong() 与虚拟机的爱恨情仇

问题描述

使用Ruoyi-cloud 二开,将服务部署到虚拟机上后,准备登录,发现验证码一致加载不出来,接口请求超时!

解决步骤

  1. telnet 虚拟机ip+port 发现可以通.
  2. curl 接口,发现一致不返回,超时了.
  3. /code 接口超时,一步一步log,测试后发现在迭代验证码时超时,询问ai.

结论

SecureRandom.getInstancestrong()方法会返回一个"强"随机数生成器,它需要收集足够的系统熵(随机性)才能生成随机数。在某些系统环境下,特别是虚拟机或源不足的服务器上,这个过程可能会阻塞很长时间,等待系统收集足够的随机熵。

学习到的知识

什么是系统熵?

熵源包括:
  • 键盘敲击的时间间隔
  • 鼠标移动的轨迹和时间
  • 硬盘读写的时间差
  • 网络数据包到达的时间
  • 中断发生的时间
  • CPU温度变化
  • 内存访问模式
  • 系统调用的时间差

Linux系统中的熵:
存储在 /dev/random 和 /dev/urandom 中内核维护一个熵池,收集各种不可预测的事件可以通过 cat /proc/sys/kernel/random/entropy_avail 查看当前可用熵

为什么会阻塞?

熵不足的情况:

  • 虚拟机环境:缺少真实硬件的随机性
  • 服务器环境:无键盘鼠标交互,硬件活动单一
  • 嵌入式设备:硬件资源有限
  • 刚启动的系统:还没收集足够的随机事件
SecureRandom.getInstanceStrong() 
→ 要求高质量熵 
→ 熵池不足时等待
→ 系统收集更多随机事件
→ 阻塞直到熵足够

不同随机数生成器的区别

  1. new Random()
    伪随机数生成器
    基于算法,可预测
    性能最好,但不安全

  2. new SecureRandom()
    使用系统熵,但有后备算法
    熵不足时使用算法扩展
    平衡了安全性和性能

  3. SecureRandom.getInstanceStrong()
    要求最高质量的熵
    熵不足时会阻塞等待
    最安全但可能性能很差

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

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

相关文章

DEM 地形分析与水文建模:基于 ArcGIS 的流域特征提取

技术点目录 一、 GIS理论及ArcGIS认识二、ArcGIS数据管理与转换三、ArcGIS地图制作与发布四、ArcGIS数据制备与编辑五、ArcGIS矢量空间分析及应用六、ArcGIS栅格空间分析及应用七、ArcGIS空间插值及应用八、DEM数据与GIS三维分析九、ArcGIS高级建模及应用十、综合讲解了解更多 …

芯伯乐XBLW GT712选型及应用设计指南

前言 在电子工程领域,精准的电流测量对于众多电路设计与系统监控至关重要。芯伯乐推出的XBLW GT712电流传感器以其独特的优势,成为工程师在诸多应用中的首选工具。本文将深入剖析XBLW GT712的工作原理、性能特点以及应用要点,为工程师提供详…

MySQL查看连接情况

说明:本文介绍如何查看MySQL会话连接情况,方便排查MySQL占用CPU过高或其他问题。 连接数据库 首先,使用命令行连接到MySQL数据库 mysql -u[用户名] -p[密码] -h[主机IP] -P[端口号]如果MySQL就在本机上,那么如下即可 mysql -u…

图文教程——Deepseek最强平替工具免费申请教程——国内edu邮箱可用

亲测有效!只需 4 步即可免费体验最新最强的 AI 助手! 最强AI助手 This account isn’t eligible for Google AI Pro plan Google AI Pro plan isn’t available in some countries or for people under a certain age. 问题终极解决方案: ht…

java转PHP开发需要几步?

PHP基础入门指南(面向Java开发者) 作为Java开发者,你已经掌握了面向对象编程、变量类型和控制结构等核心概念,这将大大加速你学习PHP的过程。下面我将从语法差异和PHP特性两个方面,帮助你快速上手PHP开发。 语法差异…

一种使用 PowerToys 的键盘管理器工具重新映射按键实现在 Windows 上快捷输入字符的方式

文章目录 一、问题背景二、安装 PowerToys三、配置快捷键 一、问题背景 在之前的一篇文章中介绍了使用 Java 程序实现快捷键输入字符的方式(https://blog.csdn.net/TeleostNaCl/article/details/148158298),其原理是利用 后台常驻的 Java 应…

Python环境搭建竞赛技术

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 Python环境搭建竞赛旨在考察参赛者对Python开发环境的熟悉程度,包括工具选择、配置优化和问题解决能力。此类竞赛常见于编程教学、企业内训或技术社区活动,强调实践性和效率。 竞赛核心考察点 环境隔…

Python爬虫实战:研究MarkupSafe库相关技术

1. 引言 在当今信息爆炸的时代,Web 数据爬取与分析已成为获取有价值信息的重要手段。Python 凭借其丰富的库生态(如 requests、BeautifulSoup),成为 Web 爬虫开发的首选语言。然而,爬取的外部数据往往存在安全隐患,特别是当这些数据被用于动态生成 HTML 页面时,可能导致…

Java-43 深入浅出 Nginx - 基本配置方式 nginx.conf Events块 HTTP块 反向代理 负载均衡

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…

适配器模式深度解析:Java设计模式实战指南与接口兼容性解决方案

适配器模式深度解析:Java设计模式实战指南与接口兼容性解决方案 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码…

类复制.省略 class.copy.elision

class类 复制/移动省略class.copy.elision 类复制省略 (copy elision) 当满足特定条件时,即使所选对象的构造函数和/或析构函数有副作用,实现也被允许省略从相同类型(忽略 cv 限定符)的源对象创建类对象。 在这种情况下&#…

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…

TensorZero:开源 LLM 应用优化与可观测性平台

TensorZero 是一个开源的 LLM(大语言模型)应用全链路优化平台,聚焦于“数据—评估—优化—实验”自动化闭环,极大提升 LLM 产品的可观测性、可优化性和可扩展性。无论你是 GPT 应用开发者,还是需要管理和提升 LLM 服务…

postgreSql数据迁移到openGauss的方案

从postgresql 导出sql 脚本 工具-备份 选择格式为Plain 得到脚本用vscode 打开并编辑 首先使用查找替换功能 语法适配修改‌: 替换不支持的参数如lock_timeout为lockwait_timeout 移除row_security等openGauss不支持的配置 检查并修改物化视图的刷新语法 …

网络爬虫学习心得

一、引言​ 在大数据时代,数据成为了驱动决策、洞察趋势的核心资源。出于对数据分析的浓厚兴趣,以及希望能更高效获取网络信息的目的,我踏上了网络爬虫的学习之旅。通过这段时间的学习,我不仅掌握了从网页中提取数据的技术&#…

计算机视觉与深度学习 | 基于Matlab的低照度图像增强算法原理,公式及实现

基于Matlab的低照度图像增强是一个重要的图像处理领域。这里我们重点介绍一种经典且效果较好的算法:多尺度Retinex算法(Multi-Scale Retinex with Color Restoration, MSRCR),包括其原理、公式及Matlab实现。 一、核心原理:Retinex理论 Retinex理论由Edwin Land提出,其…

【Linux跬步积累】—— 网络编程套接字(二)

🌏博客主页:PH_modest的博客主页 🚩当前专栏:Linux跬步积累 💌其他专栏: 🔴 每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮&#xff0…

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…

pikachu靶场通关笔记24 SQL注入07-http header注入

目录 一、SQL注入 二、http header注入 1、User - Agent 头注入 2、Referer 头注入 3、Cookie 头注入 4、Host 头注入 三、extractvalue函数 四、源码分析 1、代码审计 2、渗透思路 五、渗透实战 1、渗透探测 2、获取数据库名database 3、获取表名table 4、获取列…

LabVIEW振动时效处理系统

LabVIEW 开发大功率振动时效处理系统,实现工件残余应力检测与消除。聚焦工业场景中金属加工件的应力处理需求,展现 LabVIEW 在跨硬件集成、实时数据处理及复杂流程控制中的技术优势。 ​ 应用场景 针对航空航天、轨道交通、重型机械等领域中钢性焊接件…