jasypt加密原理_encrypt加密

jasypt加密原理_encrypt加密没什么好说的了,直接看demo。添加依赖 <dependency> <groupId>com.github.ulisesbocchio</groupId> &lt

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

jasypt由于其使用的是PBEWithMD5AndDES加密方式,所以每次加密出来的结果都不一样,所以很适合对数据进行加密

没什么好说的了,直接看demo。

基本操作

  1. 添加依赖
		<dependency>
			<groupId>com.github.ulisesbocchio</groupId>
			<artifactId>jasypt-spring-boot-starter</artifactId>
			<version>1.16</version>
		</dependency>
  1. application.properties中配置跟秘钥
# 配置文件项加解密密码,此处作为测试完,实际情况应该注释,而放在代码中(放在代码中使加密密钥和密文分开)
jasypt.encryptor.password: demo
  1. 测试

import org.jasypt.encryption.StringEncryptor;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = JasyptApplication.class)
public class JasyptApplicationTests {

    @Autowired
    private StringEncryptor stringEncryptor;

	@Test
	public void contextLoads() {
        //加密方法
        System.out.println(stringEncryptor.encrypt("123456"));
        System.out.println(stringEncryptor.encrypt("123456"));
        //解密方法
        System.out.println(stringEncryptor.decrypt("uaNBj4ZmzCD83uedRYUXqQ=="));
        System.out.println(stringEncryptor.decrypt("oKBQENfbbQiMyPvECAgPGA=="));
	}

}

运行测试结果如下,可以看到,每次加密产生的密文都不一样,然后不一样的密文解密产生的结果是一样的。密文只有对应的跟秘钥才能解析出来明文,不然会抛错org.jasypt.exceptions.EncryptionOperationNotPossibleException

jasypt加密原理_encrypt加密

所以在配置文件中配置密码等敏感字段时,我们可以先加密,配置密文上去,然后使用这个算法解密出来明文使用。
其他非对称高级算法参考

应用

  1. 在application.properties文件中增加配置项,需要jasypt来解密的密文需要用“ENC(......)”括起来
# 配置文件项加解密密码,此处作为测试完,实际情况应该注释,而放在代码中(放在代码中使加密密钥和密文分开)
#jasypt.encryptor.password: demo

# 旺店通配置参数
wangdian.sellerId=ENC(aJX3jlTcd/vAx1UAB6h5bw==)
wangdian.interfaceId=ENC(HcCmriYEyZAdJpbFfLhLKCYoW9cnbQwh)
wangdian.key=ENC(1hTTyI3puyGelRZvumOAJfML3xPKZPgfx4RtJi5rse0VEZUxFzSUBgQNA8b2tzK3)
wangdian.baseUrl=ENC(7Szvrmcnj9YZNizvJMOWxJ+USsvFRc+jnjrr7Mf7EhrM3njOJjmKoOOYGUkZZkMloOgsCD4gDJY=)

# 用友(快递查询)配置参数
yonyou.apicode=ENC(ljmI7p6GFfQEctm7heVX7fcrmzT/YT67XddJDsEbYV8/wOuZRglvz79jekSrv+Z/)
yonyou.url=ENC(wjlJlV2cejA8oZQJCHFajfJg9pTAH+WE89rwXl6lM3FrU5E1u4CnC/HPcVXLYo3lit2QNn4EGWe6I6wlO8D1nl3mGwelKj8k)
  1. 程序启动类,默认jasypt的密钥是放在配置文件中但这样会导致密文和密钥都在配置文件中,所以我把密钥放在程序中:
    public static void main(String[] args) {
        /**  配置加解密跟秘钥,与配置文件的密文分开放  */
        System.setProperty("jasypt.encryptor.password", ConstantValue.JASYPT_ENCRYPTOR_PASSWORD);

        SpringApplication.run(OrderApplication.class, args);
    }
  1. 使用注解的方式来注入配置文件中的配置项:
package com.df.dsell.order.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "wangdian")
public class WangDianConfig {

    /**
     * 接口KEY
     */
    public String interfaceId;

    /**
     * 校验key
     */
    public String key;

    /**
     * 商店标识
     */
    public String sellerId;

    /**
     * 基址
     */
    public String baseUrl;
}

  1. 编写controller来调用一下:
    @Autowired
    WangDianConfig wangDianConfig;

    @Autowired
    YonyouConfig yonyouConfig;

    @ApiOperation(value = "测试接口", notes = "测试请认真核实字段")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "moduleName", paramType = "path", allowableValues = OrderApplication.MODULE_NAME, required = true),
            @ApiImplicitParam(name = "per", paramType = "path", allowableValues = OrderApplication.PER_PB, required = true)
    })
    @GetMapping(value = "{per}/{moduleName}/wangDianConfig")
    public WangDianConfig testGetKeyOfWangDianConfig() {
        return wangDianConfig;
    }
  1. 测试结果,可见结果却是将加密文件解密出来了。
    jasypt加密原理_encrypt加密
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189253.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java调用HTTP接口(Get请求和Post请求)

    java调用HTTP接口(Get请求和Post请求)前提:一个Http接口:http://172.83.38.209:7001/NSRTRegistration/test/add.do?id=8888888&name=99999999id和name是传入的参数浏览器访问接口:java代码调用Http接口代码如下(代码中注释分为两部分:处理get请求和post请求):packagecom.inspur.OKHTTP…

    2022年5月24日
    814
  • Laravel / PHP 扩展包视频教程

    Laravel / PHP 扩展包视频教程

    2021年10月26日
    47
  • SRS软件需求规格说明书_SOR是什么文件

    SRS软件需求规格说明书_SOR是什么文件【摘要】随着信息时代科技的飞速发展,经济全球化已广为人知,英语作为全球最主要的语言之一,受到越来越多的人的喜爱,不仅为了增长知识,也为了能适应社会发展的需求。但是,学英语最重要的事首先是积累词汇,没有

    2022年8月2日
    2
  • 获得支付牌照的第三方支付机构有哪些?_第三方网络支付牌照

    获得支付牌照的第三方支付机构有哪些?_第三方网络支付牌照这篇文章为大家介绍第三方支付都包含哪些业务,以及第三方支付的各方玩家都是谁?牌照发放在中国很多行业发展都会走到前面,等行业发展到一定的规模,政府才会根据行业的发展情况进行监管。典型的行业有:第三方

    2022年8月1日
    3
  • python正则表达式匹配中文(Excel如何根据名字匹配编码)

    字符串的编码乱码问题由来已久,真的是令人头疼。这不是在做正则匹配中文时候,编码又一次成了拦路虎,在这儿记录两点。第一,字符串编码。第二,正则匹配中文。早期编码都用ASCII编码,用一个字节来处理编码。如大写A编码为65,但处理中文时候,一个字节显然不够,至少两哥字节,还不能和ASCII冲突,,中国制定GB2312编码,把中文编进去。类似的,韩国,日本都出来格子标准,结果就是多语言混合的文本中会

    2022年4月15日
    44
  • Flutter初步-第一个电视直播APP「建议收藏」

    Flutter初步-第一个电视直播APP「建议收藏」#Flutter介绍不介绍百度泛滥的,能搜到的,flutter对个人而言,易上手,业余人士也能迅速开发出一款跨平台APP,多么神奇啊。用的dart语言,scaffold脚手架迅速对app布局,路由功能,更好管理页面。还有动画。小白能做到的极限就是到UI的设计,要更深入还得用dio库,学习getpost使用,混编估计有点难,毕竟我连Java都没去了解过。#Flutter安装千篇一律,不多介…

    2022年5月7日
    189

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号