# 部分组件使用说明

## lodsve-boot-starter-encryption

1. 说明
    ```text
    利用base64、jasypt等加解密工具,对项目中一些敏感信息进行加密。
    ```

2. 配置示例
    ```yaml
    lodsve:
      encryption:
        enabled: true
        base64:
          prefix: BASE64(
          suffix: )
        jasypt:
          prefix: ENC(
          suffix: )
          password: lodsve
          algorithm: PBEWithMD5AndDES
          key-obtention-iterations: 1000
          poolSize: 1
          providerName: xxx
          providerClassName: xxx
          saltGeneratorClassname: org.jasypt.salt.RandomSaltGenerator
          ivGeneratorClassname: org.jasypt.iv.NoIvGenerator
          stringOutputType: base64
    ```
3. 配置解释
    1. enabled: 启用加解密组件
    2. base64和jasypt,表示支持的两种加解密算法,其中base64不推荐使用
    3. prefix、suffix
       ```text
       标识配置中,哪些是密文,使用prefix和suffix包裹的字符串为密文,例如:
       prefix:TEXT{
       suffix:}
       则,TEXT{tGwoovl9DkJhf45zJ2mRHg==}为密文,需取出其中的字符串进行解密
       ```
    4. 其他配置:
       ```yaml
       # 加密因子
       # 通常来说,这里的password,需要放在启动变量中传入,或者使用占位符,然后用环境变量传入,例如:
       # password: ${LODSVE_PASSWORD}
       password: lodsve
       # 解密算法
       algorithm: PBEWithMD5AndDES
       # 获取签名密钥的哈希迭代次数
       key-obtention-iterations: 1000
       # 要创建的加密器池的大小
       pool-size: 1
       # 加密程序将用于获取加密算法的{@link java.security.Provider}实现的名称。
       providerName: xxx
       # 加密程序将使用{@link java.security.Provider}实现的类名称来获取加密算法。 默认值为{@code null}
       provider-class-name: xxx
       # 加密器要使用的{@link org.jasypt.salt.SaltGenerator}实现。 默认值为{@code "org.jasypt.salt.RandomSaltGenerator"}
       salt-generator-classname: org.jasypt.salt.RandomSaltGenerator
       # 加密器要使用的{@link org.jasypt.iv.IvGenerator}实现。 默认值为{@code "org.jasypt.iv.NoIvGenerator"}.
       ivG-generator-classname: org.jasypt.iv.NoIvGenerator
       # 指定将String输出编码的形式.{@code "base64"} or {@code "hexadecimal"}.默认值为{@code "base64"}
       string-output-type: base64
       ```
4. 加密工具的使用(用Windows举例)
    1. 下载工具包`jasypt-1.9.3-dist.zip`
    2. 进入bin目录
    3. 使用encrypt.bat进行加密
       ```shell
        .\encrypt.bat input=test password=lodsve

        ----ENVIRONMENT-----------------

        Runtime: Azul Systems, Inc. OpenJDK 64-Bit Server VM 11.0.9.1+1-LTS



        ----ARGUMENTS-------------------

        input: test
        password: lodsve



        ----OUTPUT----------------------

        fKdBT8qImG9ZIuYO4reebA==
       ```
    4. 使用decrypt.bat进行解密
       ```shell
        .\decrypt.bat input=fKdBT8qImG9ZIuYO4reebA== password=lodsve

        ----ENVIRONMENT-----------------

        Runtime: Azul Systems, Inc. OpenJDK 64-Bit Server VM 11.0.9.1+1-LTS



        ----ARGUMENTS-------------------

        input: fKdBT8qImG9ZIuYO4reebA==
        password: lodsve



        ----OUTPUT----------------------

        test
       ```