加密与安全_ 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.mzph.cn/diannao/40616.shtml

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

相关文章

AIGC对设计师积极性的影响

随着科技的迅猛发展&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;工具正逐渐深入设计的每个角落&#xff0c;对设计师的工作方式和思维模式产生了深远的影响。AIGC不仅极大提升了设计师的工作效率&#xff0c;更激发了他们的创新思维&#xff0c;为设计行业带来了翻…

Dungeonborne联机失败、延迟高、卡顿的解决方法

Dungeonborne将第一人称动作的即时性与经典的西幻RPG职业设计巧妙融合&#xff0c;为玩家带来了一场前所未有的游戏体验。在这款沉浸式第一人称PvPvE地下城探险游戏中&#xff0c;我们可以独自深入探索&#xff0c;也可以与值得信赖的伙伴并肩作战&#xff0c;共同揭开地下城的…

移动端UI风格营造舒适氛围

移动端UI风格营造舒适氛围

中服云数字孪生平台引领工业物联仿真新纪元!

中服云数字孪生平台3.0是基于中服云物联网平台和数据中台打造的一款实时数据2D/3D集成展示监控平台。 旨在解决工业物联网数据的直观展示、实虚互动、仿真模拟、故障诊断、告警、预警、预测、实时观测、实时监控等问题。提供了数据采集、数据底座、监控逻辑、建模工具、展示互…

数据结构 —— 图的遍历

数据结构 —— 图的遍历 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) 实现…

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类型为例了&…

【单片机毕业设计选题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;他们之间的联系是什么…

PCB设计时,信号走线要先过ESD/TVS管,这是为什么?

目录 为什么有上面这个问题&#xff1f; 问题的原因——走线电感 走线电感的阻抗 电感的影响 小结 都说接口处的信号要先过ESD/TVS管&#xff0c;然后拉到被保护器件&#xff0c;为什么不这样做效果就不好&#xff1f;那如果受板子实际情况限制&#xff0c;必须这样layout…

Zabbix 配置MySQL数据库监控

Zabbix MySQL数据库监控简介 通过 Zabbix 监控 MySQL 数据库&#xff0c;可以获取有关数据库性能、运行状况和资源使用情况的详细信息&#xff0c;帮助及时发现和解决问题。 Zabbix官方提供了一个名为MySQL by Zabbix agent的监控模板&#xff0c;该模板专为 Zabbix 通过 Zabb…

华为5288 V5服务器安装BCLinux8U4手记

本文记录了华为5288 V5服务器安装BCLinux8U4操作系统的过程。 一、系统环境 1、服务器 华为FusionServer Pro 5288 V5服务器 2、操作系统 BCLinux-R8-U4-Server-x86_64-220725.iso 官网下载地址 sha256sum&#xff1a;1d31d3b8e02279e89965bd3bea61f14c65b9d32ad2ab6d4eb…

DTP 抽取出错:data target is locked by process***

怎么会显示被几年前的一个process lock住了呢&#xff1f; 搞不明白。 不管怎样&#xff0c;去RSPM_MONITOR改&#xff0c;data target填上ADSO名&#xff0c;选时间&#xff0c;Process status选Y。 找到这条&#xff0c;双击&#xff0c;发现是active的状态。可能是因为前后…