jasypt命令行工具的使用说明

简介:

  jasypt能够以很简单的方式为Java项目提供加密功能,这种简单的方式体现着它的命令行工具,与Spring,Hibernate, Springsecurity, wicket等第三方框架的集成。

    

    本文参加jasypt官方网站:http://www.jasypt.org/  下载jasypt包,解压缩到本地目录。

   如下图:

   根目录:

   wKiom1OKlyfT8rvRAAGJqqy5qBs453.jpg

   命令行工具目录:

   wKioL1OKlpXTPiuAAAHjoduEf5U657.jpg

  

   说明:

           在lib目录下是jasypt的核心jar和与第三方组件集成的jar. 

           在bin目录下是jasypt的命令行工具脚本.

           在apidoc目录下自然就是帮助文档。


   下面主要介绍jasypt的命令行工具(这里的操作环境是windows系统):

   1.listAlgorithms.bat(listAlgorithms.sh)

      wKioL1OKmULDrPpvAAD47HEDwtc868.jpg

    DIGEST ALGORTHMS:摘要算法

    PBE ALGORTHMS(PASSWORD BASE ENCRYPTION):基于口令的加密算法

  2.下面介绍如何使用digest.bat, encrypt.bat,  decrypt.bat

  •      digest.bat

    wKioL1OKnA2DY1ymAAFMVE5Dn6w879.jpg

   

    命令:digest.bat input=sa algorithm=SHA的意思是对输入信息:"sa" 使用SHA算法计算摘要信息,OUTPUT则是输出结果。

    说明:直接输入digest.bat可以查看命令帮助信息和参数要求,这里input是必选参数,algorithm是可选参数,默认的计算摘要信息算法是MD5。

  •     encrypt.bat和decrpt.bat

         加密和解密是对应的,同样的方式,直接输入命令就可以查看帮助信息和参数要求。比如在命令窗口输入:encrypt.bat

wKioL1OKnejSKibsAAF2UK99jvs302.jpg

      由于encrypt.bat和decrypt.bat是对应的,因此帮助信息和参数要求是一致的,区别在于encrypt.bat的input参数值是“原信息”,decrypt.bat的input参数值是“加密信息”。



       从上面的参数说明中可以看到algorithm是可选的,那是应为jasypt提供了默认的一套参数取值,而这里的加密的默认算法是:PBEWithMD5AndDES


     下面通过一个例子演示一下加密和解密:

     加密:

    

wKiom1OKotSgoXy9AAG4uO_qFcg165.jpg


   解密:

wKioL1OKom2xPCaCAAIGfXgHF4w983.jpg

      上述加密解密使用了“PBEWITHSHA1ANDRC2_40”算法,操作一切正常。

      经过对PBE算法中的其它三个做了同样的测试发现使用“PBEWITHMD5ANDTRIPLEDES”算法操作失败的情况。

    

wKioL1OKpLmTWdWRAAJYEJqT5SI679.jpg

  

   从上面的提示信息中很难看出问题出在什么地方,于是想到用Java程序来测试一下这个算法。结果错误提示信息如下:

  

1
2
3
4
5
org.jasypt.exceptions.EncryptionOperationNotPossibleException:
  Encryption raised an exception. 
  A possible cause is you are using strong encryption algorithms and you have 
  not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 
  in  this  Java Virtual Machine


  大致的意思是没有安装JCE不受限长度策略文件,于是百度谷歌一阵再Orcale官网找到了JDK7的JCE文件。http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

下载后解压可以放到JAVA_HOME\jdk1.7.0_45\jre\lib\security下或者JAVA_HOME\jdk1.7.0_45_jre\lib\security下,一共两个文件local_policy.jar和US_export_policy.jar.这样会覆盖度JDK默认的这两个文件。


  为了一探究竟,这里个文件的内容不同之处,解压之后发现不同的地方在于local_policy.jar里的local_policy.policy内容。

JDK默认的local_policy.policy内容是:


1
< span  style = "font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;" >// Some countries have import limits on crypto strength. This policy file< br >// is worldwide importable.< br >< br >grant {< br >    permission javax.crypto.CryptoPermission "DES", 64;< br >    permission javax.crypto.CryptoPermission "DESede", *;< br >    permission javax.crypto.CryptoPermission "RC2", 128, < br >                                     "javax.crypto.spec.RC2ParameterSpec", 128;< br >    permission javax.crypto.CryptoPermission "RC4", 128;< br >    permission javax.crypto.CryptoPermission "RC5", 128, < br >          "javax.crypto.spec.RC5ParameterSpec", *, 12, *;< br >    permission javax.crypto.CryptoPermission "RSA", *;< br >    permission javax.crypto.CryptoPermission *, 128;< br >};< br ></ span >


  JCE的local_policy.policy内容是:

 

1
< span  style = "font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;" >// Country-specific policy file for countries with no limits on crypto strength.< br >grant {< br >    // There is no restriction to any algorithms.< br >    permission javax.crypto.CryptoAllPermission; < br >};< br ></ span >

   

   JDK默认的policy中对一些国家进口密码强度进行了限制。


本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1420837,如需转载请自行联系原作者
相关文章
|
Java API Maven
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
我们经常会在yml配置文件中存放一些敏感数据,比如数据库的用户名、密码,第三方应用的秘钥等等。这些信息直接以明文形式展示在文件中,无疑是存在较大的安全隐患的,所以今天这篇文章,我会借助jasypt实现yml文件中敏感信息的加密处理。
6239 1
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
|
NoSQL Redis
M1 MacBook安装redis
M1 MacBook安装redis
1287 0
|
10月前
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
|
UED
一些 CSS3 动画的实际应用案例
一些 CSS3 动画的实际应用案例
645 57
|
11月前
|
自然语言处理 安全
Min-p采样:通过动态调整截断阈值让大模型文本生成兼顾创造力与逻辑性
大语言模型通过预测下一个词生成文本,采样策略决定其创造力与连贯性。Min-p采样根据模型置信度动态调整选择阈值,在高不确定性时扩大候选范围,低不确定性时聚焦高概率词,相较Top-k、Top-p等方法,更好平衡了多样性与质量,尤其在高温下仍保持输出稳定,提升生成文本的流畅性与创新性。
553 3
|
Ubuntu 应用服务中间件 网络安全
ELK完整部署教程
本文介绍了在Ubuntu 22.04上部署ELK(Elasticsearch、Logstash、Kibana)及Filebeat的完整步骤。内容涵盖Elasticsearch安装与安全配置、Kibana启用SSL与注册、Logstash配置输入输出,以及Filebeat采集日志并发送至Logstash或Elasticsearch的方法。适用于本地非容器环境的日志收集与可视化搭建。
|
存储 JSON 小程序
【小程序云开发】不用后端也能构建完整的微信小程序
本文介绍了如何从零开始学习和掌握微信小程序云开发,包括云函数、云数据库和HTTP触发等重要概念。通过详细的步骤和示例,读者将学会如何创建和部署云函数,以及如何使用云数据库来存储和管理小程序的数据。同时,本文还介绍了如何通过HTTP触发器实现小程序与外部API的数据交互,从而为小程序开发提供更灵活、高效的后端解决方案。无论您是初学者还是有一定经验的开发者,本文都将帮助您轻松掌握微信小程序云开发,并为您的小程序开发项目提供更多可能性。
3401 0
|
SQL 数据库
SQL中CASE WHEN THEN ELSE END的用法详解
SQL中CASE WHEN THEN ELSE END的用法详解
4603 2
webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
2651 0
|
Java
杨校老师课堂之JDK1.8下载、安装与环境变量配置
杨校老师课堂之JDK1.8下载、安装与环境变量配置
2840 0