Jasypt加密使用手册

gertermxw 贡献于2011-01-11

作者 muxw  创建于2007-04-03 05:45:00   修改者muxiwei  修改于2009-12-07 05:57:00字数7161

文档摘要:简介Jasypt是Sourceforge.net上的一个开源项目,一个Java库,可以使开发者不需太多操作就可以给Java项目添加基本加密功能,而且不需要知道加密原理。
关键词:

简 介 2 组件安装 2 组件使用 3 一. 使用jasypt-1.5加密Spring的配置文件 3 二. jasypt-1.5加密hibernate数据库 5 三. 为 Web 应用程序的请求提供保护 7 组件缺陷 8 性能测试 8 参考资料 8 简 介 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。 组件安装 l 组件获取 地址:http://sourceforge.net/projects/jasypt/files/。 l 组件库说明 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),第一个配置的是加密的算法(PBEWithMD5AndDES),第二个配置的是要加密的参数(或者对象) 第二步:定义Encryptor: 由上一步的环境变量配置中引入加密机,它是由jasypt加密框架提供。 第三步:读取加密的属性文件 配置文件的配置,要加密的参数(或者对象)放在db.properties中。 <!――指定要已被加密的属性文件db.properties Jasypt集成了对spring的属性文件解密――> classpath:db.properties <!――原Spring读取属性文件db.properties――> <!――配置数据数――> 第四步:程序中使用定义好的Encryptor 注入: 程序中使用: 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并增加以下配置: hibernateStringEncryptor hibernateStringEncryptor ...... 在hibernante配置文件中注册上诉文件 其对应关系参考如下: 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: 请注意,我们设定延迟的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"> 执行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官方网站

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享文档获得金币 ] 3 人已下载

下载文档