# catoop-springproperties **Repository Path**: catoop/catoop-springproperties ## Basic Information - **Project Name**: catoop-springproperties - **Description**: 使用springframework开发应用程序时,对properties文件内容进行加密解密。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2017-03-13 - **Last Updated**: 2021-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #catoop-springproperties 使用方法: ###一、在要使用的项目中添加依赖配置(你需要将该工程maven打包发布到你的私库) ``` com.catoop catoop-springproperties 1.1.1 ``` ###二、使用命令对明文字符串进行加密 ``` java -cp D:\apache-maven\repository\com\catoop\catoop-springproperties\1.0\catoop-springproperties-1.0.jar com.catoop.spring.prop.EncryptTools pwd123456 ``` 命令执行完毕后会输出:privateKey(私钥)、publicKey(公钥)、encryptValue(加密后的字符串) 如果我们公钥和私钥都已经有了,我们使用命令时可以指定私钥串进行加密,命令如下: ``` java -cp D:\apache-maven\repository\com\catoop\catoop-springproperties\1.0\catoop-springproperties-1.0.jar com.catoop.spring.prop.EncryptTools pwd123456 "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAkaZlFp70x8s+5a6Jk9VkifoT+5hNQlwc/J2CLIrqoMji5mJYvDdouHFaGxKdZMSJ+bTbBaFTYcGc2jqSQPQGRwIDAQABAkBTDJcNi/u1RL4LhzcpVX8rca4dQt2i3hUlMca9EUTyAlg73v0t3tINdwwQ+YnA5HqtP6I0wyzWV6ziTefhs+khAiEA8SP6zdr1k5cN8SDhwuMEO3qtIgDoL4niYt4Mbh2jyjECIQCaoApTeSYMCvj0edO4tbtgjKWjvN8b2FWVLi1maA3B9wIhAOIdF9eh4rbzZMpfR/LjxpszbFc/PHkfNR36EvPKbURxAiAUu06HIKA0TyhQByGXC27DJDh1OrajUh8vcFCQAXWOwwIhAKW5XQOSwjVngSldWlAWNvSP7pxMGGB3jz0+EgFhf30g" ``` 执行命令会输出加密后的密文字符串。 ###三、修改properties配置文件,将需要加密的字符串加密后配置到配置文件中 如下以数据库连接密码为例(支持对配置文件中所有的key值进行加密): ``` jdbc.username=dbloginname jdbc.password=ENCRYPT@@R/BpVAYJy+eanwcnuHW0rWOaoISUI34FALuj+oZhjrK3qKV3RYYze9yjVreNPDTeK3zWp1Qd0FcJYZQhn4/Cg== props.publickey=file://F:/workspace-trunc-cg/keys/pubkey.key ``` ###四、修改spring配置文件 将如下代码 ``` classpath:application.properties UTF-8 ``` 或者 ``` ``` 修改为: ``` classpath:application.properties UTF-8 ``` 其中publicKey如果没有配置,则不会对配置文件中的任何内容进行解密。 publicKey的配置方式可以有3种: 1.可以直接配置公钥字符串;如:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJPsIdV== 2.可以配置公钥的本地文件绝对路径;如:file://E:/key/publickey.key或Linux下的/data/key/publickey.key 3.可以配置公钥的网络地址路径;如:http://192.168.x.x:8081/key/publickey.key 至此,就可以启动工程测试验证结果了。 ==================================================================================================== SpringMVC框架,分为applicationContext和WebApplicationContext 我们一般在 spring-context.xml 和 spring-mvc.xml 中都需要配置 PropertyPlaceholderConfigurer 分别用来加载和注入不同 applicationContext 中的属性。 这时候,你可以像上面一样那上面代码拷贝两份,你也可以使用下面这种方法: ``` classpath:application.properties ``` 下面这段配置你可以再 spring-context.xml 和 spring-mvc.xml 中分别放一份,这样我们的解密动作就只会触发一次了(多次触发也无所谓,并不消耗上面资源) ``` ``` ================================================================================================================ ###版本变更 v1.1.1 1. 如下配置 decryptPropsBean 不再为必须配置,可以不配置 ``` jdbc.url jdbc.username jdbc.password ``` 2. properties 配置文件中对加密的值,增加使用前缀标记 `ENCRYPT@@` ,例如: ``` jdbc.password=ENCRYPT@@RFclMuKpu13sx+0N88ohoyy/5/XKVId3X8T7eU4bqaOqqubSFIFwG68VYv4GBhRYAqDeYRgi24MDh7242vp5mA== ``` 3. 注意配置 decryptPropsBean 和 前缀标记 ENCRYPT@@ 不可同时配置,只能选取一种方式。 ----------------------------------------------------------------------------------------------------------------