JAsypt暗号化spring-bootプロファイル

12953 ワード

本文コードhttps://gitee.com/tothis/spring-boot-record/tree/master/jasypt
現在の最新バージョンは3.0です.0しかし、私は走っていません.本文は2.1を使います.2公式サイトのドキュメントを実現
依存の追加
<dependency>
    <groupId>com.github.ulisesbocchiogroupId>
    <artifactId>jasypt-spring-boot-starterartifactId>
    <version>2.1.2version>
dependency>

テストクラス
public class JasyptTest {

    private final String salt = "salt";

    /**
     *      3.0.0      PBEWithMD5AndDES 3.0.0        PBEWITHHMACSHA512ANDAES_256
     */
    private final String algorithm = "PBEWithMD5AndDES";

    @Test
    public void testEncrypt() {
        // jar    password                    
        // java -cp  D:\apache-maven\repository\org\jasypt\jasypt\1.9.3\jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=123456 password=salt algorithm=PBEWithMD5AndDES
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();

        config.setAlgorithm(algorithm);
        config.setPassword(salt); //   
        standardPBEStringEncryptor.setConfig(config);
        String plainText = "123456"; //     
        String encryptedText = standardPBEStringEncryptor.encrypt(plainText);
        System.out.println(encryptedText);
    }

    @Test
    public void testDecrypt() {
        // java -cp  D:\apache-maven\repository\org\jasypt\jasypt\1.9.3\jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="UQYWKlRt8B8xR5S0qK/W1w==" password=salt algorithm=PBEWithMD5AndDES
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();

        config.setAlgorithm(algorithm);
        config.setPassword(salt); //   
        standardPBEStringEncryptor.setConfig(config);
        System.out.println(standardPBEStringEncryptor.decrypt("z/DToUyute3CJDZc22bN9w=="));
        System.out.println(standardPBEStringEncryptor.decrypt("UQYWKlRt8B8xR5S0qK/W1w=="));
        System.out.println(standardPBEStringEncryptor.decrypt("qMayX003HCjXkp8wsstiqQ=="));
    }
}

塩の値はプロファイルに直接配置すると無効になります.したがって、環境変数または環境属性に配置できます jvm
//       
System.getProperty("test")
// test             default
System.getProperty("test", "default")

//           
System.setProperty("test", "value");

//   app.jar      test    value
java -jar app.jar -Dtest=value

//               map   map   UnsupportedOperationException
System.getenv()
//   key test     
System.getenv("test")

スプリングbootプロファイルで${key}を使用して値を取ると、環境変数と環境属性の値が自動的に取得されます.
springbootを構成するには@EnableAutoConfigurationを構成する必要がありますが@SpringBootApplicationに含まれています
jasypt:
  encryptor:
  	#       JASYPT                (java -jar xxxx.jar JASYPT=abcd)
    #             java -jar xxxx.jar --jasypt.encryptor.password=abcd
    # JASYPT     JASYPT       abcd   
    password: ${JASYPT:abcd}
    algorithm: PBEWithMD5AndDES

#   ENC       ENC()                
baidu-ak: ENC(F454f8a5efe5e577997931cc01de3974)

テストコントロール
@Controller
public class TestController {

	@Value("${baidu-ak}")
    private String baiduAk;

    @GetMapping("test")
    public String test() {
        return baiduAk;
    }
}