📜  如何使用 Jasypt 在 Spring Boot 项目中加密密码

📅  最后修改于: 2022-05-13 01:55:48.579000             🧑  作者: Mango

如何使用 Jasypt 在 Spring Boot 项目中加密密码

Spring Boot 是一个基于 Java 的框架,用于开发微服务以构建企业级应用程序。

在开发项目时经常会遇到需要连接 MongoDB 等数据库,并将数据库连接的真实密码存储在 spring boot 项目的配置文件(application.yml 或 application.properties)中。甚至授权进行其他 API 调用所需的密码或令牌也以相同的方式存储。

实际上,您可以避免在配置文件中添加实际密码并使用Java库“jasypt-spring-boot”。

什么是Jasypt?
Jasypt (Java Simplified Encryption) ,为 Spring Boot Applications 中的属性源提供加密支持。它将帮助您在项目中添加一些基本加密功能,而无需编写任何代码,而无需编写任何代码。 Springboot 是一个非常强大的框架,它将帮助您在不实现任何加密方法的情况下添加加密能力。 Jasypt 是高度可配置的。

使用 Jasypt 添加加密的步骤:

  1. 添加 jasypt 的 maven 依赖:在 pom.xml 文件中,添加可以在 maven 存储库中轻松找到的 maven 依赖。

  2. 在 Spring Boot Application 主 Configuration 类中添加注解:需要添加@EnableEncryptableProperties注解以使应用程序了解整个 Spring Environment 的可加密属性。

  3. 确定用于加密和解密的密钥 密钥用于加密密码,稍后可用于解密加密值以获得实际密码。您可以选择任何值作为密钥。
  4. 生成加密密钥 可以通过以下两种方法之一生成加密密钥:
    1. 使用 Jasypt 在线工具:

      此链接可用于通过传递所选密钥来生成加密密钥。

      • 加密密码:abcd1234
      • 选择加密类型:双向加密(默认使用PBEWithMD5AndDES)
      • 密钥:你好(可以是任何值)
      • 加密字符串:kNuS1WAezYE7cph7zXVTiPSQSdHTx7Kv

      您实际上可以使用该工具通过解密来加密和检查加密密钥。

    2. 使用 jasypt Jar:从 maven 存储库下载 jasypt jar 文件并通过以下命令运行它:

      以下是传递给运行jar的命令行参数的意义:

      • 输入:abcd1234(要加密的实际密码)
      • 密码:你好(你选择的密钥)
      • 算法:PBEWithMD5AndDES(使用默认算法)
      • 输出:scEjemHosjc/hjA8saT7Y6uC65bs0swg(输入的加密值)

      注意:虽然 3.1 和 3.2 中的加密值 ie Encrypted String & OUTPUT 不同,但由于密钥相同,所以两种情况下解密后的值相同(abcd1234)。

  5. 在配置文件(application.yml 或 application.properties)中添加加密密钥:现在而不是添加实际密码,即。 “abcd1234”如上例,您需要添加上述任一方法生成的加密值。但是 jasypt 依赖项如何理解配置文件的特定属性需要解密呢?因此,为了让 Jasypt 知道您的加密值,它使用您需要以以下格式添加的约定:

    在上图中,完成了数据库密码的加密。您可以在必须隐藏实际密码的任何情况下使用它。

  6. 选择的密钥需要在运行时传递给解密:让 Jasypt 知道您用来形成加密值的密钥。因此,以下是传递密钥的不同方法:
    1. 将其作为配置文件中的属性传递。像往常一样运行项目,解密就会发生。

    2. 使用以下命令运行项目:
    3. 导出 Jasypt 加密器密码: