当前位置: 首页 > 知识库问答 >
问题:

如何在属性文件中隐藏密码

武彭薄
2023-03-14

Spring Boot使用属性文件,至少在默认情况下,密码是纯文本的。有可能以某种方式隐藏/解密这些吗?

共有1个答案

东郭俊楠
2023-03-14

您可以使用Jasypt加密属性,因此您的属性如下所示:

db.password=ENC(XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=)

Jasypt允许您使用不同的算法对属性进行加密,一旦您获得了放置在enc(...)中的加密属性。例如,您可以使用终端通过Jasypt以这种方式加密:

encrypted-pwd$ java -cp ~/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar  org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="contactspassword" password=supersecretz algorithm=PBEWithMD5AndDES

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

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 24.45-b08



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

algorithm: PBEWithMD5AndDES
input: contactspassword
password: supersecretz



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

XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=

要用Spring Boot轻松配置它,可以使用它的启动程序jasypt-spring-boot-starter,组ID为com.github.ulisesbocchio

mvn -Djasypt.encryptor.password=supersecretz spring-boot:run
export JASYPT_ENCRYPTOR_PASSWORD=supersecretz
mvn spring-boot:run

您可以查看下面的链接了解更多细节:

https://www.ricston.com/blog/encrypting-properties-in-spring-boot-with-jasypt-spring-boot/

要在应用程序中使用加密属性,只需像往常一样使用它,使用您喜欢的任何一种方法(Spring Boot使用神奇的方法,无论如何属性必须在类路径中):

@Value("${db.password}")
private String password;
@Autowired
private Environment environment;

public void doSomething(Environment env) {
    System.out.println(env.getProperty("db.password"));
}

导出jasypt_encryptor_password=supersecretz

 类似资料:
  • 问题内容: Spring Boot使用属性文件,并且至少在默认情况下,密码为纯文本。是否可以以某种方式隐藏/解密这些内容? 问题答案: 你可以使用Jasypt加密属性,因此可以使属性如下所示: Jasypt允许你使用不同的算法对属性进行加密,一旦获得加密的属性,就可以将其放入。例如,你可以使用终端通过Jasypt以这种方式进行加密: 要使用Spring Boot轻松配置它,可以将其启动器jasyp

  • 问题内容: 试图隐藏文件夹没有成功。我发现了: 但这对我没有用。我究竟做错了什么? 问题答案: 您的代码有两件事,都与文件夹名称文字有关。该函数需要Unicode字符串参数。您可以通过在字符串前面加上字符来指定其中之一。其次,字符串中的任何文字反斜杠字符都必须加倍,或者您也可以为其添加前缀。下面的代码中使用了一个双前缀。 您可以在此处找到Windows的系统错误代码。要在资源管理器中查看属性更改的

  • 问题内容: 有没有一种方法可以在xml spring配置文件中隐藏/加密密码?我读到DataSource的“自定义”子类是可能的,但是解决方案将密钥与纯文本保存在相同的配置文件中…因此有点没用。 有没有办法使用KeyStore?例如,从密钥库中读取值。 谢谢大家 问题答案: 是的,你可以这样做。您将必须围绕数据源类创建一个包装器bean。这是我以前做过的一个例子。希望这可以帮助! 然后,在Secu

  • 在运行spark作业时,可以在事件日志中以纯文本形式看到SSL密钥密码、keystorepassword。你能帮我如何从日志中隐藏这些密码吗? 当我看到下面的内容时,https://issues.apache.org/jira/browse/spark-16796似乎是他们修复了它,使其不受web UI的影响。但我不确定我能用原木修复它 你的帮助真的很感激!! “{”事件“:”SparkListe

  • 问题内容: 我想隐藏密码输入。我在stackoverflow中看到许多答案,但如果按Backspace键,则无法验证值。条件返回false。 我尝试了几种解决方案来覆盖该函数,但是如果按退格键,则会出现缓冲区问题,我看到了不可见的字符。 我按:“ A”,退格键,“ B”,我的缓冲区中有:“ \ u0041 \ u0008 \ u0042”(toString()=’A \ bB’),而不是“ B”。

  • 我的问题是,我的env的Spring Boot执行器endpoint实际上用如下开头替换了一些属性: 我不知道为什么。我的申请表中没有任何暗示他应该把它藏起来。我想有一些启发式方法可以根据属性名隐藏它。 有什么办法可以避免掩蔽吗?