Java中提高密碼的安全性(禁止直接使用String),Spring Boot中有哪些現實的方案?

時間 2021-06-02 00:14:41

1樓:Biggee Lucloner

來來來,給個比較專業的意見。先講廢話。

加密是一種標準化操作。驗證加密也是標準化操作。脫離標準就沒有意義了。

比如:「我愛中國」->加密為「1」。加密過程就是把1記到腦子裡。那這樣確實誰也解不開了……

笑話講完了,正文就是,加密行為分為:演算法+混淆+填充。驗證行為分為,簽名+演算法+引數。

比如加密:DES+MOD256+PKCS7。這樣加密後,保證還能解密。

驗證就簡單了,比如:SHA256+RSA+BASE64,這樣就都變成可見字元了。不過拿到密文只能驗證,是無法還原原文的。密碼驗證常用這種模式。

2樓:明禮馨德

禁止使用String?任何從前端傳到後端的資料本質就是個string,後端再根據定義的型別轉換到相應的資料型別而已,不是說用string就不安全,一般來說密碼的傳輸從前端到後端會進行一次md5的加密,後端接受到後再用指定的鹽值進行二次md5加密,這樣安全性相對較高,加密過的密碼也是一串字串,就是string。

3樓:liujunsong

這個問題前段時間遇到了,最後採用了乙個偷懶的辦法解決了。

前端傳入引數時,把字串型別進行base64編碼,後端接受到以後利用base64解碼即可。如果擔心base64可能被攔截的話,只要修改base64加密的金鑰就可以了。

4樓:無言

首先,密碼的安全性,本質是明文密文的可破解難易程度的體現。而不是明文密文的資料型別(數值、字串等)。

其次,密碼的安全性和框架關係不大,框架對應的是整個介面層資料傳輸時的安全性,不會特別去處理密碼這一特定含義的資料。

最後,安全性最本質的是加解密演算法,各jar包工具類都會有各種各樣的加解密演算法,以及秘鑰管理策略。建議題主可以去看看加解密演算法這一類書籍。但讓如果你密碼是明文傳輸,涉及到資料安全問題,可以再看看網路安全方面的知識書籍。

分割線分割線

過了這麼久,再補充一些理論知識!

從系統的角度上分析!密碼的安全性可以分為:1、資料的安全性(盡量使用複雜的密碼),2、資料傳輸的安全性(使用密文進行傳輸),3、秘鑰的安全性(單獨列,因為明文變密文的時候秘鑰是很重要的一部分),4、資料儲存的安全性(從鍵盤輸入到後端伺服器響應再到前端展示,各個階段的儲存都需要進行管理,不僅僅是當前工作的系統的可見儲存行為,包含其他隱性的儲存行為,比如:

網路傳輸時候的快取,jvm的儲存,特別是底層框架和作業系統的儲存行為等都要考慮進去)

還有其他沒考慮到的,望各位補充!

密碼學中安全性證明的random oracle模型是怎樣的?

玄星 Random Oracle就是乙個理想化的Hash。通常可以視為一張表,兩列,一列是用來寫輸入值x,一列用來記錄x對應的Hash,也就是H x 初始為空,就是空空的兩列。RO的行為可以這麼描述 當輸入為x的時候 1.如果x和H x 已經在表裡記錄過,就輸出H x 2.如果沒有關於x的記錄,則R...

如何提高區塊鏈賬戶安全性?

惘說 保密你的私鑰位址 位元幣位址是定義位元幣的分配和傳送終點所需的唯一資訊。這些位址由使用者的錢包匿名產生。一旦位址被使用,與其有關的所有交易歷史便破壞了位址的保密性。任何人都可以檢視任何位址的餘額和所有交易。由於使用者通常需要透露他們的身份以便接收服務或貨物,這樣位元幣位址就無法保持完全匿名。鑑...

租的房子是密碼鎖,我怎麼確定安全性?

飛利浦智慧型鎖 以飛利浦智慧型鎖為例 密碼解鎖的工作原理就是,把密碼 比如123456 錄入進系統,你才能用對應的密碼 123456 去解開這個鎖。所以只要我們恢復出廠設定,讓智慧型鎖把之前錄入進系統裡的所有資料清除,這樣就不必再擔心之前的人設定過什麼密碼這個問題,因為資料已經完全清空了。想要最大程...