加密與安全_ Jasypt (Java Simplified Encryption)不完全指北

文章目錄

  • 官網
  • 功能概述
  • Code

在這里插入圖片描述


官網

http://www.jasypt.org/
在這里插入圖片描述


功能概述

Jasypt 是一個 Java 庫,它允許開發人員以最小的努力添加基本的加密功能,并且不需要深入了解密碼學的工作原理。

  • 高安全性、基于標準的加密技術,適用于單向和雙向加密。加密密碼、文本、數字、二進制文件…
  • 與 Hibernate 的透明集成
  • 適合集成到基于 Spring 的應用程序中,也可以與 Spring Security 透明集成
  • 用于加密應用程序配置(即數據源)的集成功能
  • 多處理器/多核系統中高性能加密的特定功能
  • 開放 API,可與任何 JCE 提供商一起使用

在這里插入圖片描述


Code

<dependency><groupId>com.iluwatar</groupId><artifactId>jaspyt</artifactId><version>1.9.3</version>
</dependency>
 package com.artisan.jasypt.javaway;import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.util.password.BasicPasswordEncryptor;
import org.jasypt.util.text.BasicTextEncryptor;import java.security.SecureRandom;/*** @author 小工匠* @version 1.0* @mark: show me the code , change the world** http://www.jasypt.org/download.html*/
public class JasyptExample {/*** 程序的主入口函數。* 該函數不接受參數,也不返回任何值。* 依次調用了以下幾個示例函數:* 1. basicExample - 展示基本示例。* 2. oneWayPasswordExample - 展示使用一次性密碼的示例。* 3. changeAlgorithmExample - 展示改變算法的示例。* 4. multiThreadDecryptExample - 展示多線程解密的示例。*/public static void main(String[] args) {basicExample();oneWayPasswordExample();changeAlgorithmExample();multiThreadDecryptExample();}/*** 生成一個安全的隨機密碼。* 該函數不接受任何參數。** @return 返回一個由隨機字符組成的密碼字符串。密碼由大寫字母、小寫字母和數字組成,長度為16個字符。*/private static String generateSecurePassword() {// 創建一個安全隨機數生成器SecureRandom random = new SecureRandom();// 定義密碼可能包含的字符集char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();// 使用StringBuilder來構建密碼字符串StringBuilder passwordBuilder = new StringBuilder();// 循環生成16個隨機字符for (int i = 0; i < 16; i++) {// 從字符集中隨機選擇一個字符,并將其添加到密碼字符串中passwordBuilder.append(chars[random.nextInt(chars.length)]);}System.out.println("key:" + passwordBuilder);// 返回構建好的密碼字符串return passwordBuilder.toString();}/*** 簡單文本加密示例* 該方法演示了如何使用BasicTextEncryptor對文本進行加密和解密。* 該示例不接受參數,也不返回值。*/protected static void basicExample() {BasicTextEncryptor basicTextEncryptor = new BasicTextEncryptor();// 使用動態生成的密鑰,提高安全性String securePassword = generateSecurePassword();basicTextEncryptor.setPassword(securePassword);try {// 加密文本信息String encryptedText = basicTextEncryptor.encrypt("artisan*");System.out.println("encryptedText:" +  encryptedText);// 解密已加密的文本信息String decryptedText = basicTextEncryptor.decrypt(encryptedText);System.out.println("decryptedText:" + decryptedText);} catch (Exception e) {// 處理加密/解密過程中可能出現的異常System.err.println("Error during encryption or decryption: " + e.getMessage());}}/*** 展示單向密碼加密的示例。* <p>* 兩種方案:* 一種方案是把數據庫中的密文解密成明文,再與用戶輸入的密碼進行對比;* 另一種方案是把用戶輸入的密碼進行加密,把加密后的密文與數據庫的密文進行對比。* <p>* 第二種方案是更合理的,一方面是因為加密比解密更容易,性能更好;* 另一方面是減少明文出現的次數,保證安全性。* 第二種方案完全不需要解密,所以我們只需要單向地密碼加密便可以了*/private static void oneWayPasswordExample() {// 創建BasicPasswordEncryptor實例用于密碼加密和驗證BasicPasswordEncryptor encryptor = new BasicPasswordEncryptor();// 加密密碼 "artisan*"String encryptedPassword = encryptor.encryptPassword("artisan*");// 檢查密碼 "artisan*" 是否與加密后的密碼匹配,并打印結果System.out.println(encryptor.checkPassword("artisan*", encryptedPassword));// 檢查密碼 "Artisan*" (大寫) 是否與加密后的密碼匹配,并打印結果,預期為不匹配System.out.println(encryptor.checkPassword("Artisan*", encryptedPassword));}/*** 該示例演示如何改變加密算法。* 該方法不接受參數且無返回值。* 主要步驟包括創建加密器、設置密碼和算法、加密數據以及解密數據。* <p>* 自定義地使用不同的算法進行加密解密*/private static void changeAlgorithmExample() {StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();System.out.println("---------");// 設置加密器的密碼//encryptor.setPassword(generateSecurePassword());encryptor.setPassword("rQIVmVRhL7Zr2Kmu");// 設置加密器使用的加密算法encryptor.setAlgorithm("PBEWithMD5AndTripleDES");// 使用加密器對文本進行加密String encryptedText = encryptor.encrypt("artisan*");System.out.println("encryptedText:" + encryptedText);// 使用加密器對加密后的文本進行解密String decryptedText = encryptor.decrypt(encryptedText);System.out.println("decryptedText:" + decryptedText);}/*** 多線程解密示例* 該方法演示了如何使用多線程進行加密和解密操作。* 注意:該方法不接受任何參數,也不返回任何值。* <p>* Jasypt提供了多線程解密操作,可以并行解密,這樣可以提供更好的性能。一般建議可以設置與機器處理器核數一致的線程數進行解密*/private static void multiThreadDecryptExample() {// 創建并配置加密器,使用池化技術以支持多線程加密PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();// 設置線程池大小為6,即同時最多有6個線程執行加密操作encryptor.setPoolSize(6);// 設置加密使用的密碼encryptor.setPassword(generateSecurePassword());// 設置加密算法encryptor.setAlgorithm("PBEWithMD5AndTripleDES");// 加密明文字符串String encryptedText = encryptor.encrypt("artisan*#*");System.out.println("encryptedText:" + encryptedText);// 解密密文字符串String decryptedText = encryptor.decrypt(encryptedText);System.out.println("decryptedText:" + decryptedText);}}
  1. generateSecurePassword: 生成一個16字符長的安全隨機密碼。
  2. basicExample: 使用BasicTextEncryptor對文本進行加密和解密。
  3. oneWayPasswordExample: 使用BasicPasswordEncryptor進行單向密碼加密和驗證。
  4. changeAlgorithmExample: 使用StandardPBEStringEncryptor并設置自定義算法進行加密和解密。
  5. multiThreadDecryptExample: 使用PooledPBEStringEncryptor進行多線程的加密和解密操作。

在這里插入圖片描述


Java 加密體系 (JCA)

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40616.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AIGC對設計師積極性的影響

隨著科技的迅猛發展&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;工具正逐漸深入設計的每個角落&#xff0c;對設計師的工作方式和思維模式產生了深遠的影響。AIGC不僅極大提升了設計師的工作效率&#xff0c;更激發了他們的創新思維&#xff0c;為設計行業帶來了翻…

Spring Boot在java領域中有哪些優勢

哈嘍&#xff0c;大家好呀&#xff0c;淼淼又來和大家見面啦&#xff0c;隨著云計算、微服務架構的興起&#xff0c;Java開發領域迫切需要一套高效、靈活且易于上手的框架來應對日益復雜的業務需求。正是在這樣的背景下&#xff0c;Spring Boot應運而生&#xff0c;以其獨特的魅…

Dungeonborne聯機失敗、延遲高、卡頓的解決方法

Dungeonborne將第一人稱動作的即時性與經典的西幻RPG職業設計巧妙融合&#xff0c;為玩家帶來了一場前所未有的游戲體驗。在這款沉浸式第一人稱PvPvE地下城探險游戲中&#xff0c;我們可以獨自深入探索&#xff0c;也可以與值得信賴的伙伴并肩作戰&#xff0c;共同揭開地下城的…

移動端UI風格營造舒適氛圍

移動端UI風格營造舒適氛圍

中服云數字孿生平臺引領工業物聯仿真新紀元!

中服云數字孿生平臺3.0是基于中服云物聯網平臺和數據中臺打造的一款實時數據2D/3D集成展示監控平臺。 旨在解決工業物聯網數據的直觀展示、實虛互動、仿真模擬、故障診斷、告警、預警、預測、實時觀測、實時監控等問題。提供了數據采集、數據底座、監控邏輯、建模工具、展示互…

android 國內下載Gradle源

在中國使用 Gradle 時&#xff0c;可以配置使用一些國內的鏡像源&#xff0c;以提高下載速度和穩定性。以下是幾個常用的 Gradle 鏡像源地址&#xff1a; 配置 gradle-wrapper.properties 文件: 阿里云: distributionUrlhttps\://services.gradle.org/distributions/gradle-7.…

數據結構 —— 圖的遍歷

數據結構 —— 圖的遍歷 BFS&#xff08;廣度遍歷&#xff09;一道美團題DFS&#xff08;深度遍歷&#xff09; 我們今天來看圖的遍歷&#xff0c;其實都是之前在二叉樹中提過的方法&#xff0c;深度和廣度遍歷。 在這之前&#xff0c;我們先用一個鄰接矩陣來表示一個圖&#…

220千伏變電站輔助設備智能監控平臺 無人化與自動化升級改造工程

220千伏變電站特點 高電壓等級&#xff1a;220千伏變電站的最大特點是其高壓傳輸能力&#xff0c;能夠將發電廠產生的電能高效地傳輸到較遠的地區&#xff0c;滿足大型城市及工業區域的用電需求。 輸電能力大&#xff1a;220千伏變電站在輸電能力上遠大于普通的110千伏或更低…

Mybatis框架的集成使用

1_框架概述 框架是一個半成品&#xff0c;已經對基礎的代碼進行了封裝并提供相應的API&#xff0c;開發者在使用框架時直接調用封裝好的api可以省去很多代碼編寫&#xff0c;從而提高工作效率和開發速度,框架是一種經過校驗、具有一定功能的半成品軟件. 經過校驗&#xff1a;指…

【超萬卡GPU集群關鍵技術深度分析 2024】

文末有福利&#xff01; 1. 集群高能效計算技術 隨著大模型從千億參數的自然語言模型向萬億參數的多模態模型升級演進&#xff0c;超萬卡集群吸需全面提升底層計算能力。 具體而言&#xff0c;包括增強單芯片能力、提升超節點計算能力、基于 DPU (Data Processing Unit) 實現…

淺聊權限系統設計模型

淺聊權限系統設計模型 設計權限目的 目前主流的各類權限管理模型,如基于用戶、角色組、實體等等的權限模型,結合產品本身的業務、面臨的問題和未來的發展兼容,進行權限模型選型,找到適合產品本身的權限范式體系。 權限模型類型 ACL:權限控制列表(Access Control List)D…

Mx Admin 基于react18的后臺管理系統

前言 Mx Admin 基于React18 vite5 antd5的后臺管理系統&#xff0c; 基于RBAC的權限控制系統&#xff0c;動態菜單和動態路由支持tab路由緩存嵌套菜單支持多種菜單布局模式亮暗色主題切換

Enzo Life Sciences熱點分享:細胞治療中的T細胞活化

細胞治療&#xff08;Cell Therapy&#xff09;作為一種新近發展起來的癌癥治療方法&#xff0c;是一種利用患者自體&#xff08;或異體&#xff09;的成體細胞&#xff08;或干細胞&#xff09;對組織、器官進行修復的治療方法。通常是由免疫細胞和相關的細胞產生調節細胞功能…

Java判斷范圍型的數據是否存在重疊(數值類型、日期類型)

為什么寫這么一篇文章呢&#xff1f; 遇到了個問題&#xff0c;同一天可以輸入多個時間段&#xff0c;但是每個時間段的時間不能出現重疊。 納尼&#xff0c;這不就是判斷數據返回是否有重疊的變種嘛~ 簡單&#xff0c;開搞 數字范圍是否重疊判斷 這里以int類型為例了&…

linux配置qqbot(Mirai+Alicebot)

雖然最終沒有成功配置好qqbot&#xff0c;但是感覺這個過程還是值得記錄的&#xff0c;所以寫出了下文 最終因為登陸qq時的code45問題導致沒有成功登錄&#xff0c;據說更換qq號或者配置簽名服務器是有可能可行的。 安裝環境 安裝mcl&#xff08;mirai的控制臺&#xff09; …

【單片機畢業設計選題24046】-基于單片機的智能魚缸設計

系統功能: 檢測水溫&#xff0c;水溫過低開啟PTC加熱。檢測水位&#xff0c;水位過低開啟水泵抽水。檢測濕度&#xff0c;濕度過高則開啟風扇通風。 檢測PH值和渾濁度&#xff0c;TTS語音播報功能&#xff0c;OLED顯示系統信息&#xff0c;藍牙模塊連接手機APP。 系統上電后…

IT專業入門,高考假期預習指南—初識產品經理BRD、MRD 和 PRD

七月來臨&#xff0c;各省高考分數已揭榜完成。而高考的完結并不意味著學習的結束&#xff0c;而是新旅程的開始。對于有志于踏入IT領域的高考少年們&#xff0c;這個假期是開啟探索IT世界的絕佳時機。作為該領域的前行者和經驗前輩&#xff0c;你是否愿意為準新生們提供一份全…

AI 芯片之戰:開啟智能新時代的關鍵角逐

在科技發展的浪潮中&#xff0c;一場圍繞 AI 芯片的激烈競爭正在全球范圍內如火如荼地展開。多家巨頭紛紛投身其中&#xff0c;使得這場混戰已然進入白熱化階段。 AI 芯片&#xff0c;作為推動人工智能發展的核心硬件&#xff0c;其作用舉足輕重。它能夠高效地處理海量的數據&a…

生物分子生物學實驗過程的自動化與智能監控系統設計

開題報告&#xff1a;生物分子生物學實驗過程的自動化與智能監控系統設計 一、引言 隨著生物科學技術的飛速發展&#xff0c;生物分子生物學實驗在科研、醫療、農業等領域的應用日益廣泛。然而&#xff0c;傳統的生物分子生物學實驗過程大多依賴于人工操作&#xff0c;存在操…

java web 部分

jsp作用域由大到小 過濾器有哪些作用&#xff1f; 過濾器的用法&#xff1f;&#xff08;對客戶端的請求統一編碼和對客戶端進行認證&#xff09; JSP和Servlet中的請求轉發分別如何實現&#xff1f; JSP 和 Servlet 有哪些相同點和不同點&#xff0c;他們之間的聯系是什么…