首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Spring安全的密码加密和解密

使用Spring安全的密码加密和解密
EN

Stack Overflow用户
提问于 2018-07-02 08:16:40
回答 3查看 4.4K关注 0票数 2

前言:我有一个JAR,它是利用spring-boot (maven项目)开发的。然后,我将访问我的JAR文件夹并运行以下命令来执行它:

代码语言:javascript
运行
复制
java -server -jar ${jarName}
--spring.config.location=classpath:config.properties

因此,我的JAR从属性文件中读取{key, value}对,并相应地执行代码。这是没有问题的,但我的config.properties文件中没有几个属性可以直接连接到Oracle数据库。它也有我的应用程序超级管理员用户名和密码。

我不想把这段代码推到bit-bucket/stash/git,因为它有我所有的密码。

绕过:我可以使用空密码将代码推到git/stash,然后运行下面的命令通过--spring.config.location命令注入属性文件,如下所示

代码语言:javascript
运行
复制
java -server -jar ${jarName}
--spring.config.location=./config.properties

问题:如何在spring应用程序中加密和解密字符串/密码?

我想将密码存储在加密格式的属性文件中,然后通过我的代码解密它,并连接到Oracle数据库和我的应用程序。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-11 15:24:40

我将应用程序用户名、密码存储在服务器的文本文件中。然后,我使用一个插件对它们进行加密和解密,并在我的应用程序中使用。这样,我就可以将整个代码签入git,它将完全没有密码。

票数 1
EN

Stack Overflow用户

发布于 2018-07-02 08:21:12

通常,这些类型的配置文件应该在.gitignore中列出,而不是推送到存储库中。此外,如果你想加密,然后再解密他们,没有理由推动他们任何方式。但是,如果有一个常见的配置,您可能想要推送该配置,并将可信度存储在另一个未被推送的文件中。

举个例子:

  • application.properties:您希望推送到存储库的公共属性
  • database.properties:要在本地机器上保密的属性

.gitignore

代码语言:javascript
运行
复制
database.properties

然后,可以使用Spring注释在运行时加载属性文件。

代码语言:javascript
运行
复制
@PropertySource(value = { "application.properties", "database.properties" })
票数 4
EN

Stack Overflow用户

发布于 2018-07-02 11:42:53

通常,我将这种配置放在服务器的环境变量中。您可以将application.properties中的密码替换为${MY_PASSWORD},然后将密码放在环境变量中(对docker非常有用)。

您还可以使用两个文件,一个带有dev数据库密码的application-dev.properties和一个application-prod.properties,并引用环境变量来简化开发。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51131731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档