为了数据安全,现在客户要求在配置中心里的敏感数据也要加密,
比如一些平台的 AK/SK,微信的 ApiKey 等。
那么配置中心不能直接存明文,只存加密后的字符串。 然后 Java 应用程序里解密后再使用。
大家可有推荐的简单的加解密方法推荐?
1
huangmingyou 2021-08-11 12:22:53 +08:00
vault
|
2
Building 2021-08-11 12:23:41 +08:00 via iPhone
最简单的: 映射。
|
3
opentrade 2021-08-11 12:30:03 +08:00
NaCI,也有人向我推荐[SecureChannel]( https://github.com/rustdesk/rustdesk/issues/156),我还没用过。
|
4
RichardYyf 2021-08-11 12:33:17 +08:00
我们用的是 jasypt,集成在我们的 apollo 组件里面,apollo 中心里面是密文,密文会包装成固定格式,更新配置的时候根据正则判断是否是加密字符串再去解密
|
5
GM 2021-08-11 13:08:07 +08:00
rc4,加解密一个函数二十行代码搞定,任何流行语言都有实现。
|
6
jorneyr 2021-08-11 13:19:15 +08:00
SpringBoot 或者 SpringMVC 的话,Jasypt 比较方便,可参考 http://qtdebug.com/spring-boot-jasypt
|
7
CrazyRundong 2021-08-11 15:35:27 +08:00 via iPhone
加密敏感数据挺 tricky 的,需要同时保证数据的秘密性和完整性,即 authenticated encryption (AE)
正确地实现 AE 非常难,楼主可以搜下 Java 下有没有可信赖的现有实现,毕竟密码学的基本原则之一就是不要自己造轮子。我自己之前的玩具项目用的是 Python cryptography 库的 Fernet 实现 |
8
GeruzoniAnsasu 2021-08-11 15:38:02 +08:00
不要造轮子。
现成的流密码选一个,块密码选一个,非对称选一个,然后直接用现成的密码学库。 基本只有一样事情要思:怎么藏密钥 |
9
skinny 2021-08-11 15:40:17 +08:00
chacha20poly1305 呗,aes256-gcm 也行
|
10
calming 2021-08-11 15:43:17 +08:00
直接 AES 一把梭
|
11
qwerthhusn 2021-08-11 15:43:54 +08:00
直接标准的 AES 就行了啊
自己封装个 AES 加解密的方法就行了啊。 |
12
RRRoger 2021-08-11 15:44:15 +08:00
凯撒加密
|
13
copymaster 2021-08-11 15:46:39 +08:00
@GeruzoniAnsasu 太对了,密码被破译根本不是我们应该考虑的,我们只需要做好储存密钥,交换密钥这两件事做好那么就算是'绝对安全'了
|
14
sutra 2021-08-11 15:53:23 +08:00
|
15
zhangxh1023 2021-08-12 09:40:06 +08:00
那么问题来了,怎么存储这个解密的密钥,直接写死在程序里面吗
|
16
hhjswf 2021-08-12 09:50:28 +08:00
加密到底是防谁?如果配置中心都被外人捅烂了...,那这也太拉垮了...防自己人,显然也不太能防的住,相当于掩耳盗铃
|
17
Rever1e 2021-08-12 13:09:23 +08:00
用 aes 加密内容
Vigenere(sha256( 你所想的密码),aes 密钥) 刚好可以一位对一位的偏移 aes 密钥 |
18
a1274598858 2021-08-12 14:47:09 +08:00
SM4
|
19
zgk 2021-08-12 18:52:32 +08:00 via iPhone
如果只是加密一段简短的 key 的话,可以直接用 xor 运算,只要密钥比原文长就可以,密钥可以随机生成一段。
加密:密文 = 原文 xor 密钥 解密:原文 = 密文 xor 密钥 原理是 Vernam 密码,参考: https://0xffff.one/d/1043 |