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

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.dtcms.com/a/244845.html

相关文章:

  • 【更新】中国经济政策不确定性指数数据集(2000.1-2025.5)
  • 2025 年二级造价工程师职业资格考试的报考条件有哪些新变化?
  • 【Java】Arrays.sort:TimSort
  • 560. 和为K的子数组
  • 软件测试之APP测试要点(包含Monkey基础使用)
  • C++实现文本编辑功能
  • C primer plus (第六版)第七章 编程练习第4题,第5题
  • 企业如何高效构建BI团队,解锁数据价值新高地?
  • 解锁Wi-SUN潜能!移远通信发布KCM0A5S模组,点亮智慧城市新图景
  • 利用递归来遍历树
  • 蛋糕烘焙小程序源码介绍
  • 阿糖胞苷联合伊达比星为代表的强化治疗方案引领AML多阶段治疗新进展
  • UFS-Ver3.1-第九章
  • docker 安装postgre并使用php进行连接
  • Nextcloud的性能提升3倍的部署说明:你的nextcloud需要重新部署了
  • day64—回溯—组合数(LeetCode-77)
  • Verilog:流水线乘法器
  • Unity Android 启动应用的时候黑屏问题
  • 关于亚马逊WOOT折扣力度
  • 【沉浸式解决问题】csdn无法发布文章
  • 最长和谐子序列
  • 常见无法用初等函数表示的不定积分(表格总结)
  • 数据隐私是什么?如何做好数据隐私规范?
  • MacBook M1 Pro下载安装MySql
  • 【2025最新版】Node.js详细安装配置教程(Windows系统)附安装包
  • (九)现代循环神经网络(RNN):从注意力增强到神经架构搜索的深度学习演进
  • Spring Data MongoDB 提供了哪些核心组件?
  • GJB151B在151A的比较
  • 微信小程序中wxs
  • 新闻类鸿蒙应用功耗危机以及优化方案