jasypt spring boot

2025-12-11 0 670

jasyptspringboot

Jasypt integration for Spring boot 2.x and 3.0.0

Jasypt Spring Boot provides Encryption support for property sources in Spring Boot Applications.
There are 3 ways to integrate jasypt-spring-boot in your project:

  • Simply adding the starter jar jasypt-spring-boot-starter to your classpath if using @SpringBootApplication or @EnableAutoConfiguration will enable encryptable properties across the entire Spring Environment
  • Adding jasypt-spring-boot to your classpath and adding @EnableEncryptableProperties to your main Configuration class to enable encryptable properties across the entire Spring Environment
  • Adding jasypt-spring-boot to your classpath and declaring individual encryptable property sources with @EncrytablePropertySource

What\’s new?

Go to Releases

What to do First?

Use one of the following 3 methods (briefly explained above):

  1. Simply add the starter jar dependency to your project if your Spring Boot application uses @SpringBootApplication or @EnableAutoConfiguration and encryptable properties will be enabled across the entire Spring Environment (This means any system property, environment property, command line argument, application.properties, application-*.properties, yaml properties, and any other property sources can contain encrypted properties):

    <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>3.0.5</version>
    </dependency>
  2. IF you don\’t use @SpringBootApplication or @EnableAutoConfiguration Auto Configuration annotations then add this dependency to your project:

    <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot</artifactId>
            <version>3.0.5</version>
    </dependency>

    And then add @EnableEncryptableProperties to you Configuration class. For instance:

    @Configuration
    @EnableEncryptableProperties
    public class MyApplication {
        ...
    }

And encryptable properties will be enabled across the entire Spring Environment (This means any system property, environment property, command line argument, application.properties, yaml properties, and any other custom property sources can contain encrypted properties)

  1. IF you don\’t use @SpringBootApplication or @EnableAutoConfiguration Auto Configuration annotations and you don\’t want to enable encryptable properties across the entire Spring Environment, there\’s a third option. First add the following dependency to your project:

    <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot</artifactId>
            <version>3.0.5</version>
    </dependency>

    And then add as many @EncryptablePropertySource annotations as you want in your Configuration files. Just like you do with Spring\’s @PropertySource annotation. For instance:

    @Configuration
    @EncryptablePropertySource(name = \"EncryptedProperties\", value = \"classpath:encrypted.properties\")
    public class MyApplication {
    	...
    }

Conveniently, there\’s also a @EncryptablePropertySources annotation that one could use to group annotations of type @EncryptablePropertySource like this:

	@Configuration
	@EncryptablePropertySources({@EncryptablePropertySource(\"classpath:encrypted.properties\"),
	                             @EncryptablePropertySource(\"classpath:encrypted2.properties\")})
	public class MyApplication {
		...
	}

Also, note that as of version 1.8, @EncryptablePropertySource supports YAML files

Custom Environment

As of version 1.7 1.15, a 4th method of enabling encryptable properties exists for some special cases. A custom ConfigurableEnvironment class is provided: EncryptableEnvironment StandardEncryptableEnvironment and StandardEncryptableServletEnvironment that can be used with SpringApplicationBuilder to define the custom environment this way:

new SpringApplicationBuilder()
    .environment(new StandardEncryptableEnvironment())
    .sources(YourApplicationClass.class).run(args);

This method would only require using a dependency for jasypt-spring-boot. No starter jar dependency is required. This method is useful for early access of encrypted properties on bootstrap. While not required in most scenarios could be useful when customizing Spring Boot\’s init behavior or integrating with certain capabilities that are configured very early, such as Logging configuration. For a concrete example, this method of enabling encryptable properties is the only one that works with Spring Properties replacement in logback-spring.xml files, using the springProperty tag. For instance:

<springProperty name=\"user\" source=\"db.user\"/>
<springProperty name=\"password\" source=\"db.password\"/>
<appender name=\"db\" class=\"ch.qos.logback.classic.db.DBAppender\">
    <connectionSource
        class=\"ch.qos.logback.core.db.DriverManagerConnectionSource\">
        <driverClass>org.postgresql.Driver</driverClass>
        <url>jdbc:postgresql://localhost:5432/simple</url>
        <user>${user}</user>
        <password>${password}</password>
    </connectionSource>
</appender>

This mechanism could be used for instance (as shown) to initialize Database Logging Appender that require sensitive credentials to be passed.
Alternatively, if a custom StringEncryptor is needed to be provided, a static builder method is provided StandardEncryptableEnvironment#builder for customization (other customizations are possible):

StandardEncryptableEnvironment
    .builder()
    .encryptor(new MyEncryptor())
    .build()

How everything Works?

This will trigger some configuration to be loaded that basically does 2 things:

  1. It registers a Spring post processor that decorates all PropertySource objects contained in the Spring Environment so they are \”encryption aware\” and detect when properties are encrypted following jasypt\’s property convention.
  2. It defines a default StringEncryptor that can be configured through regular properties, system properties, or command line arguments.

Where do I put my encrypted properties?

When using METHODS 1 and 2 you can define encrypted properties in any of the PropertySource contained in the Environment. For instance, using the @PropertySource annotation:

    @SpringBootApplication
    @EnableEncryptableProperties
    @PropertySource(name=\"EncryptedProperties\", value = \"classpath:encrypted.properties\")
    public class MyApplication {
        ...
    }

And your encrypted.properties file would look something like this:

	secret.property=ENC(nrmZtkF7T0kjG/VodDvBw93Ct8EgjCA+)

Now when you do environment.getProperty(\"secret.property\") or use @Value(\"${secret.property}\") what you get is the decrypted version of secret.property.
When using METHOD 3 (@EncryptablePropertySource) then you can access the encrypted properties the same way, the only difference is that you must put the properties in the resource that was declared within the @EncryptablePropertySource annotation so that the properties can be decrypted properly.

Password-based Encryption Configuration

Jasypt uses an StringEncryptor to decrypt properties. For all 3 methods, if no custom StringEncryptor (see the Custom Encryptor section for details) is found in the Spring Context, one is created automatically that can be configured through the following properties (System, properties file, command line arguments, environment variable, etc.):

Key Required Default Value
jasypt.encryptor.password True
jasypt.encryptor.algorithm False PBEWITHHMACSHA512ANDAES_256
jasypt.encryptor.key-obtention-iterations False 1000
jasypt.encryptor.pool-size False 1
jasypt.encryptor.provider-name False SunJCE
jasypt.encryptor.provider-class-name False null
jasypt.encryptor.salt-generator-classname False org.jasypt.salt.RandomSaltGenerator
jasypt.encryptor.iv-generator-classname False org.jasypt.iv.RandomIvGenerator
jasypt.encryptor.string-output-type False base64
jasypt.encryptor.proxy-property-sources False false
jasypt.encryptor.skip-property-sources False empty list

The only property required is the encryption password, the rest could be left to use default values. While all this properties could be declared in a properties file, the encryptor password should not be stored in a property file, it should rather be passed as system property, command line argument, or environment variable and as far as its name is jasypt.encryptor.password it\’ll work.

The last property, jasypt.encryptor.proxyPropertySources is used to indicate jasyp-spring-boot how property values are going to be intercepted for decryption. The default value, false uses custom wrapper implementations of PropertySource, EnumerablePropertySource, and MapPropertySource. When true is specified for this property, the interception mechanism will use CGLib proxies on each specific PropertySource implementation. This may be useful on some scenarios where the type of the original PropertySource must be preserved.

Use you own Custom Encryptor

For custom configuration of the encryptor and the source of the encryptor password you can always define your own StringEncryptor bean in your Spring Context, and the default encryptor will be ignored. For instance:

    @Bean(\"jasyptStringEncryptor\")
    public StringEncryptor stringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(\"password\");
        config.setAlgorithm(\"PBEWITHHMACSHA512ANDAES_256\");
        config.setKeyObtentionIterations(\"1000\");
        config.setPoolSize(\"1\");
        config.setProviderName(\"SunJCE\");
        config.setSaltGeneratorClassName(\"org.jasypt.salt.RandomSaltGenerator\");
        config.setIvGeneratorClassName(\"org.jasypt.iv.RandomIvGenerator\");
        config.setStringOutputType(\"base64\");
        encryptor.setConfig(config);
        return encryptor;
    }

Notice that the bean name is required, as jasypt-spring-boot detects custom String Encyptors by name as of version 1.5. The default bean name is:

jasyptStringEncryptor

But one can also override this by defining property:

jasypt.encryptor.bean

So for instance, if you define jasypt.encryptor.bean=encryptorBean then you would define your custom encryptor with that name:

    @Bean(\"encryptorBean\")
    public StringEncryptor stringEncryptor() {
        ...
    }

Custom Property Detector, Prefix, Suffix and/or Resolver

As of jasypt-spring-boot-1.10 there are new extensions points. EncryptablePropertySource now uses EncryptablePropertyResolver to resolve all properties:

public interface EncryptablePropertyResolver {
    String resolvePropertyValue(String value);
}

Implementations of this interface are responsible of both detecting and decrypting properties. The default implementation, DefaultPropertyResolver uses the before mentioned
StringEncryptor and a new EncryptablePropertyDetector.

Provide a Custom EncryptablePropertyDetector

You can override the default implementation by providing a Bean of type EncryptablePropertyDetector with name encryptablePropertyDetector or if you wanna provide
your own bean name, override property jasypt.encryptor.property.detector-bean and specify the name you wanna give the bean. When providing this, you\’ll be responsible for
detecting encrypted properties.
Example:

private static class MyEncryptablePropertyDetector implements EncryptablePropertyDetector {
    @Override
    public boolean isEncrypted(String value) {
        if (value != null) {
            return value.startsWith(\"ENC@\");
        }
        return false;
    }

    @Override
    public String unwrapEncryptedValue(String value) {
        return value.substring(\"ENC@\".length());
    }
}
@Bean(name = \"encryptablePropertyDetector\")
    public EncryptablePropertyDetector encryptablePropertyDetector() {
        return new MyEncryptablePropertyDetector();
    }

Provide a Custom Encrypted Property prefix and suffix

If all you want to do is to have different prefix/suffix for encrypted properties, you can keep using all the default implementations
and just override the following properties in application.properties (or application.yml):

jasypt:
  encryptor:
    property:
      prefix: \"ENC@[\"
      suffix: \"]\"

Provide a Custom EncryptablePropertyResolver

You can override the default implementation by providing a Bean of type EncryptablePropertyResolver with name encryptablePropertyResolver or if you wanna provide
your own bean name, override property jasypt.encryptor.property.resolver-bean and specify the name you wanna give the bean. When providing this, you\’ll be responsible for
detecting and decrypting encrypted properties.
Example:

    class MyEncryptablePropertyResolver implements EncryptablePropertyResolver {
    
    
        private final PooledPBEStringEncryptor encryptor;
    
        public MyEncryptablePropertyResolver(char[] password) {
            this.encryptor = new PooledPBEStringEncryptor();
            SimpleStringPBEConfig config = new SimpleStringPBEConfig();
            config.setPasswordCharArray(password);
            config.setAlgorithm(\"PBEWITHHMACSHA512ANDAES_256\");
            config.setKeyObtentionIterations(\"1000\");
            config.setPoolSize(1);
            config.setProviderName(\"SunJCE\");
            config.setSaltGeneratorClassName(\"org.jasypt.salt.RandomSaltGenerator\");
            config.setIvGeneratorClassName(\"org.jasypt.iv.RandomIvGenerator\");
            config.setStringOutputType(\"base64\");
            encryptor.setConfig(config);
        }
    
        @Override
        public String resolvePropertyValue(String value) {
            if (value != null && value.startsWith(\"{cipher}\")) {
                return encryptor.decrypt(value.substring(\"{cipher}\".length()));
            }
            return value;
        }
    }
@Bean(name=\"encryptablePropertyResolver\")
    EncryptablePropertyResolver encryptablePropertyResolver(@Value(\"${jasypt.encryptor.password}\") String password) {
        return new MyEncryptablePropertyResolver(password.toCharArray());
    }

Notice that by overriding EncryptablePropertyResolver, any other configuration or overrides you may have for prefixes, suffixes,
EncryptablePropertyDetector and StringEncryptor will stop working since the Default resolver is what uses them. You\’d have to
wire all that stuff yourself. Fortunately, you don\’t have to override this bean in most cases, the previous options should suffice.

But as you can see in the implementation, the detection and decryption of the encrypted properties are internal to MyEncryptablePropertyResolver

Using Filters

jasypt-spring-boot:2.1.0 introduces a new feature to specify property filters. The filter is part of the EncryptablePropertyResolver API
and allows you to determine which properties or property sources to contemplate for decryption. This is, before even examining the actual
property value to search for, or try to, decrypt it. For instance, by default, all properties which name start with jasypt.encryptor
are excluded from examination. This is to avoid circular dependencies at load time when the library beans are configured.

DefaultPropertyFilter properties

By default, the DefaultPropertyResolver uses DefaultPropertyFilter, which allows you to specify the following string pattern lists:

  • jasypt.encryptor.property.filter.include-sources: Specify the property sources name patterns to be included for decryption
  • jasypt.encryptor.property.filter.exclude-sources: Specify the property sources name patterns to be EXCLUDED for decryption
  • jasypt.encryptor.property.filter.include-names: Specify the property name patterns to be included for decryption
  • jasypt.encryptor.property.filter.exclude-names: Specify the property name patterns to be EXCLUDED for decryption

Provide a custom EncryptablePropertyFilter

You can override the default implementation by providing a Bean of type EncryptablePropertyFilter with name encryptablePropertyFilter or if you wanna provide
your own bean name, override property jasypt.encryptor.property.filter-bean and specify the name you wanna give the bean. When providing this, you\’ll be responsible for
detecting properties and/or property sources you want to contemplate for decryption.
Example:

    class MyEncryptablePropertyFilter implements EncryptablePropertyFilter {
    
        public boolean shouldInclude(PropertySource<?> source, String name) {
            return name.startsWith(\'encrypted.\');
        }
    }
@Bean(name=\"encryptablePropertyFilter\")
    EncryptablePropertyFilter encryptablePropertyFilter() {
        return new MyEncryptablePropertyFilter();
    }

Notice that for this mechanism to work, you should not provide a custom EncryptablePropertyResolver and use the default
resolver instead. If you provide custom resolver, you are responsible for the entire process of detecting and decrypting
properties.

Filter out PropertySource classes from being introspected

Define a comma-separated list of fully-qualified class names to be skipped from introspection. This classes will not be
wrapped/proxied by this plugin and thereby properties contained in them won\’t supported encryption/decryption:

jasypt.encryptor.skip-property-sources=org.springframework.boot.env.RandomValuePropertySource,org.springframework.boot.ansi.AnsiPropertySource

Encryptable Properties cache refresh

Encrypted properties are cached within your application and in certain scenarios, like when using externalized configuration
from a config server the properties need to be refreshed when they changed. For this jasypt-spring-boot registers a
RefreshScopeRefreshedEventListener that listens to the following events by default to clear the encrypted properties cache:

public static final List<String> EVENT_CLASS_NAMES = Arrays.asList(
            \"org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent\",
            \"org.springframework.cloud.context.environment.EnvironmentChangeEvent\",
            \"org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent\"
    );

Should you need to register extra events that you would like to trigger an encrypted cache invalidation you can add them
using the following property (separate by comma if more than one needed):

jasypt.encryptor.refreshed-event-classes=org.springframework.boot.context.event.ApplicationStartedEvent

Maven Plugin

A Maven plugin is provided with a number of helpful utilities.

To use the plugin, just add the following to your pom.xml:

<build>
  <plugins>
    <plugin>
      <groupId>com.github.ulisesbocchio</groupId>
      <artifactId>jasypt-maven-plugin</artifactId>
      <version>3.0.5</version>
    </plugin>
  </plugins>
</build>

When using this plugin, the easiest way to provide your encryption password is via a system property i.e.
-Djasypt.encryptor.password=\”the password\”.

By default, the plugin will consider encryption configuration in standard Spring boot configuration files under
./src/main/resources. You can also use system properties or environment variables to supply this configuration.

Keep in mind that the rest of your application code and resources are not available to the plugin because Maven plugins
do not share a classpath with projects. If your application provides encryption configuration via a StringEncryptor
bean then this will not be picked up.

In general, it is recommended to just rely on the secure default configuration.

Encryption

To encrypt a single value run:

mvn jasypt:encrypt-value -Djasypt.encryptor.password=\"the password\" -Djasypt.plugin.value=\"theValueYouWantToEncrypt\"

To encrypt placeholders in src/main/resources/application.properties, simply wrap any string with DEC(...).
For example:

sensitive.password=DEC(secret value)
regular.property=example

Then run:

mvn jasypt:encrypt -Djasypt.encryptor.password=\"the password\"

Which would edit that file in place resulting in:

sensitive.password=ENC(encrypted)
regular.property=example

The file name and location can be customised.

Decryption

To decrypt a single value run:

mvn jasypt:decrypt-value -Djasypt.encryptor.password=\"the password\" -Djasypt.plugin.value=\"DbG1GppXOsFa2G69PnmADvQFI3esceEhJYbaEIKCcEO5C85JEqGAhfcjFMGnoRFf\"

To decrypt placeholders in src/main/resources/application.properties, simply wrap any string with ENC(...). For
example:

sensitive.password=ENC(encrypted)
regular.property=example

This can be decrypted as follows:

mvn jasypt:decrypt -Djasypt.encryptor.password=\"the password\"

Which would output the decrypted contents to the screen:

sensitive.password=DEC(decrypted)
regular.property=example

Note that outputting to the screen, rather than editing the file in place, is designed to reduce
accidental committing of decrypted values to version control. When decrypting, you most likely
just want to check what value has been encrypted, rather than wanting to permanently decrypt that
value.

Re-encryption

Changing the configuration for existing encrypted properties is slightly awkward using the encrypt/decrypt goals. You
must run the decrypt goal using the old configuration, then copy the decrypted output back into the original file, then
run the encrypt goal with the new configuration.

The re-encrypt goal simplifies this by re-encrypting a file in place. 2 sets of configuration must be provided. The
new configuration is supplied in the same way as you would configure the other maven goals. The old configuration
is supplied via system properties prefixed with \”jasypt.plugin.old\” instead of \”jasypt.encryptor\”.

For example, to re-encrypt application.properties that was previously encrypted with the password OLD and then
encrypt with the new password NEW:

mvn jasypt:reencrypt -Djasypt.plugin.old.password=OLD -Djasypt.encryptor.password=NEW

Note: All old configuration must be passed as system properties. Environment variables and Spring Boot configuration
files are not supported.

Upgrade

Sometimes the default encryption configuration might change between versions of jasypt-spring-boot. You can
automatically upgrade your encrypted properties to the new defaults with the upgrade goal. This will decrypt your
application.properties file using the old default configuration and re-encrypt using the new default configuration.

mvn jasypt:upgrade -Djasypt.encryptor.password=EXAMPLE

You can also pass the system property -Djasypt.plugin.old.major-version to specify the version you are upgrading from.
This will always default to the last major version where the configuration changed. Currently, the only major version
where the defaults changed is version 2, so there is no need to set this property, but it is there for future use.

Load

You can also decrypt a properties file and load all of its properties into memory and make them accessible to Maven. This is useful when you want to make encrypted properties available to other Maven plugins.

You can chain the goals of the later plugins directly after this one. For example, with flyway:

mvn jasypt:load flyway:migrate -Djasypt.encryptor.password=\"the password\"

You can also specify a prefix for each property with -Djasypt.plugin.keyPrefix=example.. This
helps to avoid potential clashes with other Maven properties.

Changing the file path

For all the above utilities, the path of the file you are encrypting/decrypting defaults to
file:src/main/resources/application.properties.

This can be changed using the -Djasypt.plugin.path system property.

You can encrypt a file in your test resources directory:

mvn jasypt:encrypt -Djasypt.plugin.path=\"file:src/main/test/application.properties\" -Djasypt.encryptor.password=\"the password\"

Or with a different name:

mvn jasypt:encrypt -Djasypt.plugin.path=\"file:src/main/resources/flyway.properties\" -Djasypt.encryptor.password=\"the password\"

Or with a different file type (the plugin supports any plain text file format including YAML):

mvn jasypt:encrypt -Djasypt.plugin.path=\"file:src/main/resources/application.yaml\" -Djasypt.encryptor.password=\"the password\"

Note that the load goal only supports .property files

Spring profiles and other spring config

You can override any spring config you support in your application when running the plugin, for instance selecting a given spring profile:

mvn jasypt:encrypt -Dspring.profiles.active=cloud -Djasypt.encryptor.password=\"the password\" 

Multi-module maven projects

To encrypt/decrypt properties in multi-module projects disable recursion with -N or --non-recursive on the maven command:

mvn jasypt:upgrade -Djasypt.plugin.path=file:server/src/test/resources/application-test.properties  -Djasypt.encryptor.password=supersecret -N

Asymmetric Encryption

jasypt-spring-boot:2.1.1 introduces a new feature to encrypt/decrypt properties using asymmetric encryption with a pair of private/public keys
in DER or PEM formats.

Config Properties

The following are the configuration properties you can use to config asymmetric decryption of properties;

Key Default Value Description
jasypt.encryptor.privateKeyString null private key for decryption in String format
jasypt.encryptor.privateKeyLocation null location of the private key for decryption in spring resource format
jasypt.encryptor.privateKeyFormat DER Key format. DER or PEM

You should either use privateKeyString or privateKeyLocation, the String format takes precedence if set.
To specify a private key in DER format with privateKeyString, please encode the key bytes to base64.

Note that jasypt.encryptor.password still takes precedences for PBE encryption over the asymmetric config.

Sample config

DER key as string

jasypt:
    encryptor:
      privateKeyString: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtB/IYK8E52CYMZTpyIY9U0HqMewyKnRvSo6s+9VNIn/HSh9+MoBGiADa2MaPKvetS3CD3CgwGq/+LIQ1HQYGchRrSORizOcIp7KBx+Wc1riatV/tcpcuFLC1j6QJ7d2I+T7RA98Sx8X39orqlYFQVysTw/aTawX/yajx0UlTW3rNAY+ykeQ0CBHowtTxKM9nGcxLoQbvbYx1iG9JgAqye7TYejOpviOH+BpD8To2S8zcOSojIhixEfayay0gURv0IKJN2LP86wkpAuAbL+mohUq1qLeWdTEBrIRXjlnrWs1M66w0l/6JwaFnGOqEB6haMzE4JWZULYYpr2yKyoGCRAgMBAAECggEAQxURhs1v3D0wgx27ywO3zeoFmPEbq6G9Z6yMd5wk7cMUvcpvoNVuAKCUlY4pMjDvSvCM1znN78g/CnGF9FoxJb106Iu6R8HcxOQ4T/ehS+54kDvL999PSBIYhuOPUs62B/Jer9FfMJ2veuXb9sGh19EFCWlMwILEV/dX+MDyo1qQaNzbzyyyaXP8XDBRDsvPL6fPxL4r6YHywfcPdBfTc71/cEPksG8ts6um8uAVYbLIDYcsWopjVZY/nUwsz49xBCyRcyPnlEUJedyF8HANfVEO2zlSyRshn/F+rrjD6aKBV/yVWfTEyTSxZrBPl4I4Tv89EG5CwuuGaSagxfQpAQKBgQDXEe7FqXSaGk9xzuPazXy8okCX5pT6545EmqTP7/JtkMSBHh/xw8GPp+JfrEJEAJJl/ISbdsOAbU+9KAXuPmkicFKbodBtBa46wprGBQ8XkR4JQoBFj1SJf7Gj9ozmDycozO2Oy8a1QXKhHUPkbPQ0+w3efwoYdfE67ZodpFNhswKBgQDN9eaYrEL7YyD7951WiK0joq0BVBLK3rwO5+4g9IEEQjhP8jSo1DP+zS495t5ruuuuPsIeodA79jI8Ty+lpYqqCGJTE6muqLMJDiy7KlMpe0NZjXrdSh6edywSz3YMX1eAP5U31pLk0itMDTf2idGcZfrtxTLrpRffumowdJ5qqwKBgF+XZ+JRHDN2aEM0atAQr1WEZGNfqG4Qx4o0lfaaNs1+H+knw5kIohrAyvwtK1LgUjGkWChlVCXb8CoqBODMupwFAqKL/IDImpUhc/t5uiiGZqxE85B3UWK/7+vppNyIdaZL13a1mf9sNI/p2whHaQ+3WoW/P3R5z5uaifqM1EbDAoGAN584JnUnJcLwrnuBx1PkBmKxfFFbPeSHPzNNsSK3ERJdKOINbKbaX+7DlT4bRVbWvVj/jcw/c2Ia0QTFpmOdnivjefIuehffOgvU8rsMeIBsgOvfiZGx0TP3+CCFDfRVqjIBt3HAfAFyZfiP64nuzOERslL2XINafjZW5T0pZz8CgYAJ3UbEMbKdvIuK+uTl54R1Vt6FO9T5bgtHR4luPKoBv1ttvSC6BlalgxA0Ts/AQ9tCsUK2JxisUcVgMjxBVvG0lfq/EHpL0Wmn59SHvNwtHU2qx3Ne6M0nQtneCCfR78OcnqQ7+L+3YCMqYGJHNFSard+dewfKoPnWw0WyGFEWCg==

DER key as a resource location

jasypt:
    encryptor:
      privateKeyLocation: classpath:private_key.der

PEM key as string

jasypt:
encryptor:
privateKeyFormat: PEM
privateKeyString: |-
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtB/IYK8E52CYM
ZTpyIY9U0HqMewyKnRvSo6s+9VNIn/HSh9+MoB

下载源码

通过命令行克隆项目:

git clone https://github.com/ulisesbocchio/jasypt-spring-boot.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 jasypt spring boot https://www.zuozi.net/34939.html

WordPress Android
上一篇: WordPress Android
website
下一篇: website
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务