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
繁體地址,請注明出處:http://hk.pswp.cn/web/83337.shtml
英文地址,請注明出處:http://en.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 在跨硬件集成、實時數據處理及復雜流程控制中的技術優勢。 ? 應用場景 針對航空航天、軌道交通、重型機械等領域中鋼性焊接件…