首先需要(Java Cryptography Extension (JCE))的支持,下载路径:

https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

在jdk的安装目录下/jre/lib/security,做文件替换

在config server的配置里加入

encrypt:
key: 1112

加密需要key

然后启动项目,在命令行执行curl

curl -X POST http://127.0.0.1:8888/encrypt -d mysecret

要加密的信息放最后,运行出来的结果就是加密后的字符串

7de875ef75b01957a512240c1863106a84b3344aadfa5aec2b2e4cd75478f703

需要解密的话,运行命令:

curl -X POST http://127.0.0.1:8888/decrypt -d 7de875ef75b01957a512240c1863106a84b3344aadfa5aec2b2e4cd75478f703
mysecret

使用加密加密到应用程序中:

application.properties
spring.datasource.username: dbuser
spring.datasource.password: {cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ

application.yml

spring:
datasource:
username: dbuser
password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

请注意其中的差别

而客户端正常使用即可。

依赖:

       <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

,可能暴露的问题:

{
"timestamp": 1545212081503,
"status": 401,
"error": "Unauthorized",
"message": "Full authentication is required to access this resource",
"path": "/encrypt/status"
}

没有权限,

问题原因:

security:
basic:
enabled: true #默认值是true
user:
name: user
password: 123

解决办法:

enabled=false

以上为对称的加解密,以下讲解非对称加解密:

非对称选择在安全性方面是优越的,但是使用对称密钥往往更方便,因为它只是配置的一个属性值。

要创建一个密钥库进行测试

keytool -genkeypair -alias mytestkey -keyalg RSA \
-dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \
-keypass changeme -keystore server.jks -storepass letmein

在windows系统如果执行失败,将命令中的 \ 去掉,此为linux系统中的换行符;

如果对此命令有兴趣,可参考以下

 -alias <alias>                  要处理的条目的别名
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-sigalg <sigalg> 签名算法名称
-destalias <destalias> 目标别名
-dname <dname> 唯一判别名
-startdate <startdate> 证书有效期开始日期/时间
-ext <value> X.509 扩展
-validity <valDays> 有效天数
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令

运行后会生成server.jks文件,

server.jks文件放在类路径(例如)中,然后在您的application.yml中配置服务器:

encrypt:
keyStore:
location: classpath:/server.jks
password: letmein
alias: mytestkey
secret: changeme

启动项目,运行命令

curl -X POST http://127.0.0.1:8888/encrypt -d 密文

AQArkCDzEKT2rJU9U+7msxdFvNqZeerM0q0zd7RJ9tyejlvzdo0eDIU6PeU693OszLI8TJ0aNPiZPkWeMJMVdO+kL8lo3EdNjQoYNpGd4sayIzhB71+0NwMKX9xqDzkZ8wz4UW8Q5qXDw1Dsj5VlmOjLD5kh+z21JNGT+EeK2ScWY2KCiy/vtUXm2ajOF5vpBWXINgvnb4+BToy8xyNbDqAORi1YehPXBdw1gEnH9c0w0uhl2dQU1MUT4+YcuaHCFOsUKJnPvxh/6cZFlvsAw1o5cT3f/fvLj3+i5VGrtx0Nu0Gn+OizrjvZ5dugS1Swjtdo+VQ5T5ONT2JxWeVBGjOW+Sxn71cJvzvDQZVkNTp9UeSVdudL23a2PGTU8fm4m94=

剩下的和上面一样

最新文章

  1. iOS 开发 -----公司测试打包上传流程
  2. Ansible 学习笔记
  3. Hibernate双向一对一对象关系模型映射
  4. 配置JDK时环境变量path和JAVA_HOME的作用是什么?
  5. Jump Game II
  6. Ubuntu 14.10 下grep命令详解
  7. Spring在代码中获取bean的几种方式
  8. Android(java)学习笔记155:如何让你的GridView不再滚动
  9. linux命令打开程序
  10. 记录GDI 文本的设置
  11. flex中validateall()方法, 多Item验证 ,结果统一提示
  12. CSS:重量和级联规则,确定其优先级
  13. 自动化定位——通过XPath定位元素
  14. 211806385 黄存慧 https://www.cnblogs.com/huangch/ https://github.com/HuangCh327
  15. 【Redis】Redis学习(六) Redis 基本运维
  16. 4、JUC--CountDownLatch闭锁
  17. 04 Spring的@Autowired注解、@Resource注解、@Service注解
  18. svn版本管理
  19. C++ 内存分配(new,operator new)详解
  20. JS高级心法——作用域链

热门文章

  1. Java的反射机制和动态代理
  2. 使用FL2440之问题1
  3. 如何新建.htaccess文件
  4. Android开发之(1)AnimationListener
  5. Codeforces 514C Watto and Mechanism(字典树)
  6. 数学知识巧学JCF(Java Collections framework)
  7. memcached安装与初步
  8. Windows 10安装IntelliJ IDEA时快捷键冲突设置
  9. Nginx阻止DDoS攻击的教程收集(转)(待实践)
  10. 框架-数据库定义MD5加密