简 介
Jasypt是Sourceforge.net上的一个开源项目,一个Java库,可以使开发者不需太多操作就可以给Java项目添加基本加密功能,而且不需要知道加密原理。
1.该开源项目可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信
2.还包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二进制文件。
3.Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。
4.加密属性文件(encryptable properties files)、Spring work集成、加密Hibernate数据源配置、新的命令行工具、URL加密的Apache wicket集成以及升级文档。
5.Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应用配置的集成功能,而且提供一个开放的API从而任何一个Java Cryptography Extension都可以使用Jasypt。
组件安装
组件获取
地址:http://sourceforge.net/projects/jasypt/files/。
组件库说明
1.主要工作库:
文件 版本 描述
jasypt-1.5.jar 1.5
2.主要依赖库(这些库在使用过程中必须被引入):
文件 描述 版本 地址
commons-codec-1.1.jar http://www.jasypt.org/dependencies.html
icu4j-3.4.4.jar 如果你是Java SE 5或更早的版本,就需要ICU3.4.4或更高版本的支持, http://www.jasypt.org/dependencies.html
commons-lang-2.1.jar 2.1 http://www.jasypt.org/dependencies.html
组件使用
一. 使用jasypt-1.5加密Spring的配置文件
(1)配置环境变量:
• JASYPT_HOME=C:\Java\jasypt-1.5
• JASYPT_CLASSPATH=.;%JASYPT_HOME%\bin\jasypt-cli-bundle.jar;%JASYPT_HOME%\lib\commons-codec-1.1.jar;%JASYPT_HOME%\lib\commons-lang-2.1.jar;%JASYPT_HOME%\lib\icu4j-3.8.jar;%JASYPT_HOME%\lib\jasypt-1.5.jar
• .在 path下添加JASYPT_HOME\bin
(2)生成密文和解密:
写密文生成文件,如encrypt.bat,内容如下,会在passwd.txt生成密文:
@ECHO OFF
%JASYPT_HOME%\bin\encrypt.bat input=" E8iptsi855" password="PTSPASSWORD" verbose=false > .\passwd.txt
解密生成文件,如decrypt.bat,内容如下,会在passwd1.txt生成解密后数据:
@ECHO OFF
%JASYPT_HOME%\bin\decrypt.bat input="wASjSlTjsgYFLyVswElJ4S7yjOcGnABF" password=" PTSPASSWORD " verbose=false > .\passwd1.txt
(3)文件配置:
• db.properties :
datasource.driver=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost/reportsdb
datasource.username=reportsUser
datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)
• applicationContext.xml :
第一步:定义配置环境
引入环境变量配置,其中id是引用名,class是加密框架用到的类(jasypt),第一个<property>配置的是加密的算法(PBEWithMD5AndDES),第二个<property>配置的是要加密的参数(或者对象)
<bean id="environmentVariablesConfiguration"
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="password" value="PTSPASSWORD" />
</bean>
第二步:定义Encryptor:
由上一步的环境变量配置中引入加密机,它是由jasypt加密框架提供。
<bean id="configurationEncryptor"
class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
</bean>
第三步:读取加密的属性文件
配置文件的配置,要加密的参数(或者对象)放在db.properties中。
<!――指定要已被加密的属性文件db.properties Jasypt集成了对spring的属性文件解密――>
<bean id="propertyConfigurer"
class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
</bean>
<!――原Spring读取属性文件db.properties――>
<!-- <bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
</bean>
-->
<!――配置数据数――>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${datasource.driver}" />
<property name="url" value="${datasource.url}" />
<property name="username" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
</bean>
第四步:程序中使用定义好的Encryptor
注入:
<bean id="ResBiz" class="business.perfmng.impl.ResBiz">
<property name="resService" ref="ResService" />
…
<property name="encryptor" ref="configurationEncryptor" />
</bean>
程序中使用:
public class ResBiz implements IResBiz
{
private IResService resService;
…
private PBEStringEncryptor encryptor;
public void setEncryptor(PBEStringEncryptor encryptor)
{
this.encryptor = encryptor;
}
…
String password = String.format("ENC(%s)", encryptor.encrypt(“axxxx”));
}
二. jasypt-1.5加密hibernate数据库
(1)声明hiberante加密类型:
Jasypt使用自定义Hibernate的UserTypes提供加密您的数据,为此你需要配置类型/src/jasyptHibernateTypes.hbm.xml并增加以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- VARCHAR, CLOB, TEXT based types -->
<typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
<param name="encryptorRegisteredName"> hibernateStringEncryptor </param>
</typedef>
<typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
<param name="encryptorRegisteredName"> hibernateStringEncryptor </param>
</typedef>
......
</hibernate-mapping>
在hibernante配置文件中注册上诉文件<mapping resource="jasyptHibernateTypes.hbm.xml"/>
其对应关系参考如下:
Java类型 数据库类型 Jasypt Hibernate 类型
String VARCHAR, CLOB, TEXT EncryptedStringType
byte[] VARBINARY, BLOB EncryptedBinaryType
Byte VARCHAR, CLOB, TEXT EncryptedByteAsStringType
Short VARCHAR, CLOB, TEXT EncryptedShortAsStringType
Integer VARCHAR, CLOB, TEXT EncryptedIntegerAsStringType
Long VARCHAR, CLOB, TEXT EncryptedLongAsStringType
BigInteger NUMERIC, NUMBER EncryptedBigIntegerType
BigInteger VARCHAR, CLOB, TEXT EncryptedBigIntegerAsStringType
Float VARCHAR, CLOB, TEXT EncryptedFloatAsStringType
Double VARCHAR, CLOB, TEXT EncryptedDoubleAsStringType
BigDecimal NUMERIC, NUMBER EncryptedBigDecimalType
BigDecimal VARCHAR, CLOB, TEXT EncryptedBigDecimalAsStringType
Boolean VARCHAR, CLOB, TEXT EncryptedBoleanAsStringType
Date VARCHAR, CLOB, TEXT EncryptedDateAsStringType
Calendar VARCHAR, CLOB, TEXT EncryptedCalendarAsStringType
(2)在spring中注册jasypt的bean:
<bean id="saltGenerator" class="org.jasypt.salt.FixedStringSaltGenerator">
<property name="salt" value="justAnotherSalt"/>
</bean>
<bean id="simpleStringConfiguration" class="org.jasypt.encryption.pbe.config.SimpleStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="password" value="neusoft" />
<property name="saltGenerator" ref="saltGenerator" />
</bean>
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="simpleStringConfiguration"/>
</bean>
<bean id="hibernateStringEncryptor" class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
<property name="encryptor" ref="configurationEncryptor"/>
<!-- This property value must match "encryptorRegisteredName" used when defining hibernate user types -->
<property name="registeredName" value="hibernateStringEncryptor"/>
</bean>
请注意,我们设定延迟的lazy-init="false" ,强制这些beans加载,这些需要在服务启动时注册到加密中
(3)如果没有spring配置如下,在java中加入如下方法:
StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
...
HibernatePBEEncryptorRegistry registry =
HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor("strongHibernateStringEncryptor", strongEncryptor);
(4)配置hibernate映射文件:
hibernate-mapping
package="com.neusoft.acorn.domain.customers.impl.entity">
<class name="Member" table="member" lazy="false">
<property name="memberNo" type="java.lang.String"
column="MEMBER_NO" />
<property name="memberName" type="encryptedString"
column="MEMBER_NAME" />
<property name="namePingyin" type="java.lang.String"
column="NAME_PINGYIN" />
</class>
</hibernate-mapping>
执行hibenatre映射对象时直接进行加密解密操作,操作起来非常灵活,
注:对hibernante加密的数据表支持=查询,不支持模糊查询。
三. 为 Web 应用程序的请求提供保护
参考http://tech.ddvip.com/2008-12/1229678517101440_5.html
组件缺陷
1. 对hibernante加密的数据表支持=查询,不支持模糊查询。
性能测试
硬件:
CPU:Intel(R) Core(TM)2 Duo CPU
内存:1G
软件:
服务器:tomcat5.5
应用程序:Unieap3.2
数据库:mysql5.1.3
数据:
记录数:2104条数据
加密字段:姓名,地址,邮件,电话,个人头像,证件号码,家庭地址
加密执行时间:9.584秒
未加密执行时间:0.546秒
参考资料
1.http://www.jasypt.org官方网站
分享到:
相关推荐
jasypt 加密工具,采用md5规则,可自定义秘钥,实用小工具。 直接java -jar进行启动即可
Jasypt(Java Simple and Strong Encryption)是一个强大的加密库,提供了简单易用的API,让开发者可以轻松地在应用程序中实现加密和解密功能。本篇文章将深入探讨Jasypt的核心概念、使用方法以及如何将其与Spring ...
jasypt加密包 ,java加密解密都可以用这个包,很方便了
Java开发案例-springboot-14-整合jasypt加密yml配置文件-源代码+文档.rar Java开发案例-springboot-14-整合jasypt加密yml配置文件-源代码+文档.rar Java开发案例-springboot-14-整合jasypt加密yml配置文件-源代码+...
《Jasypt加密与Spring整合在Hibernate配置中的应用》 在现代软件开发中,数据安全性和隐私保护成为了不可或缺的一部分。特别是在企业级应用中,数据库配置信息、敏感的系统参数等通常需要进行加密处理,以防止未经...
SpringBoot(27) 整合jasypt加密yml配置文件
SpringBoot 集成 Jasypt 对数据库加密以及踩坑 SpringBoot 集成 Jasypt 对数据库加密是一个非常重要的安全机制,通过对数据库密码的加密,可以保护数据库的安全,防止未经授权的访问。在本文中,我们将介绍如何在 ...
jasypt是一个强大的Java加密库,它为开发者提供了简单的API,可以轻松地在应用程序中集成加密功能。在Spring Boot中,我们可以利用jasypt来加密配置文件(如application.properties或application.yml)中的敏感数据...
springboot笔记示例八:yml文件数据库连接redis密码加密实现使用jasypt加密 springboot中大多数配置我们都采用yml文件配置,比如数据库连接,redis连接,等明文,存在安全风险,...本文采用开源jasypt加密实现该功能
基于JDK11 和 Jasypt java类库开发的加解密工具安装包 * 内置jdk11,无JDK环境也可使用 * 支持基于Jasypt的加密 * 支持基于Jasypt的解密 * 支持PBEWITHHMACSHA512ANDAES_256和PBEWithMD5AndDES方式加解密
这个库允许Python开发者利用JASYPT的强大加密功能,比如强加密算法、可配置的加密过程以及易用的API,为Python应用增加数据安全性的保障。 JASYPT是Java领域中广泛使用的加密库,它简化了加密过程,并提供了一种...
本文将深入探讨如何在Spring Boot项目中利用PBEWITHHMACSHA512ANDAES-128算法对配置文件中的密码进行加密。 首先,让我们理解PBEWITHHMACSHA512ANDAES-128是什么。这是一种密码基于密钥的加密(Password-Based ...
- **应用配置文件**:在分布式系统中,通过jasypt加密配置文件中的密钥,提高系统的安全性。 - **用户密码存储**:可以使用jasypt对用户密码进行加密存储,保证用户信息安全。 6. **注意事项** - 加密强度的选择...
SpringBoot集成Jasypt实现敏感信息加密,在Spring Boot中使用Jasypt加密和解密敏感数据非常简单,只需要在Spring Boot应用程序中添加Jasypt依赖项,并在应用程序配置文件中指定加密和解密密钥即可。
加密 解密 如何使用 下载 运行java -jar jasypt-gui.jar 如何建造 git clone https://github.com/fahrinh/jasypt-gui cd jasypt-gui mvn clean package # an executable jar is located at target/jasypt-gui.jar
>根据Jasypt官方文档,Jasypt可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信、创建完整检查数据的sums. 其他性能包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二...
Jasypt 使用的加密算法是 PBEWithMD5AndDES(对称加密),中文名“基于口令加密”,是一种基于密码的加密算法。该算法的特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的...
使用jasypt-1.5加密Spring的db属性文件 概述 jasypt-1.5是一个Java加密工具,它可以对Spring的db属性文件进行加密,本文将介绍如何使用jasypt-1.5来加密Spring的db属性文件。 知识点 1. jasypt-1.5的安装 首先...
Java加密包Jasypt,全称为“Java Simplified Encryption”,是一个强大的、易用的Java库,专门用于在应用程序中进行加密操作。它提供了一种简单且直观的方式来集成强大的加密功能,使得开发人员无需深入理解复杂的...
《深入解析Jasypt:Java加密库的利器》 在Java开发中,数据安全和隐私保护是不可或缺的重要环节。为了确保敏感信息不被非法获取,开发者通常需要对数据进行加密处理。在这里,我们要探讨的正是一个强大的Java加密库...