Maison  >  Article  >  Java  >  SpringBoot intègre le cadre de sécurité Jasypt et le cryptage du contenu du fichier de configuration (exemple de code)

SpringBoot intègre le cadre de sécurité Jasypt et le cryptage du contenu du fichier de configuration (exemple de code)

不言
不言avant
2019-02-19 15:56:536060parcourir

Ce que cet article vous apporte concerne l'intégration du cadre de sécurité Jasypt et du cryptage du contenu des fichiers de configuration (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Nos fichiers de configuration yml ou propriétés du projet SpringBoot sont tous en texte clair, ce qui est relativement moins sécurisé. Nous savons tous que le fichier de configuration contient un nom d'utilisateur et un mot de passe de connexion à la base de données, des clés tierces et d'autres informations. Alors soyons prudents et utilisons le cryptage.

Le framework de sécurité Jasypt est utilisé ici.

Un : introduire le paquet jar dans pom La soi-disant clé

<!-- Jasypt加密 -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.0.0</version>
    </dependency>

Trois : créer notre boîte à outils

Exemple de code : JasyptUtils.java

# 配置文件加密key
jasypt:
  encryptor:
    password: panther

Quatre : Comment utiliser

La boîte à outils ci-dessus a une méthode principale, remplissez la clé que vous avez configurée, puis remplissez la valeur que vous devez chiffrer et exécutez-la directement.

package com.zhuang.common.utils;

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

/**
 * @Created with Intellij IDEA
 * @Author : payne
 * @Date : 2018/5/18 - 10:37
 * @Copyright (C), 2018-2018
 * @Descripition : Jasypt安全框架加密类工具包
 */
public class JasyptUtils {

    /**
     * Jasypt生成加密结果
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待加密值
     * @return
     */
    public static String encryptPwd(String password, String value) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.encrypt(value);
        return result;
    }

    /**
     * 解密
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待解密密文
     * @return
     */
    public static String decyptPwd(String password, String value) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.decrypt(value);
        return result;
    }

    public static SimpleStringPBEConfig cryptOr(String password) {
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(password);
        config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        return config;
    }

    public static void main(String[] args) {
        // 加密
        System.out.println(encryptPwd("panther", "root"));
        // 解密
        System.out.println(decyptPwd("panther", "GfP4qfnrJeqMvzN1nOemIQ=="));
    }

}
Similaire à la connexion à la base de données dans le fichier de configuration

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer