Keystore 我应该为要加密的每个字符串创建一个新的SecretKey吗?

Keystore 我应该为要加密的每个字符串创建一个新的SecretKey吗?,keystore,caesar-cipher,secret-key,Keystore,Caesar Cipher,Secret Key,我想对创建帐户并将加密文件存储到数据库中的每个人的名字和姓氏进行加密。 然后仅当安全请求到达@RestController 我使用Cipher类,它来自javax.crypto.Cipher 我将用于加密的密钥存储在KeyStore.getInstance(“JCEKS”) 我的问题是,我应该为我想要加密的每个项目创建一个新的SecretKey,还是创建一个密钥并使用它完成所有工作 换句话说,userOne的信息应该通过secretKeyEntryOne,userTwo-secretKeyEnt

我想对创建帐户并将加密文件存储到数据库中的每个人的
名字和
姓氏进行加密。
然后仅当安全请求到达
@RestController

我使用
Cipher
类,它来自
javax.crypto.Cipher
我将用于加密的密钥存储在
KeyStore.getInstance(“JCEKS”)

我的问题是,我应该为我想要加密的每个项目创建一个新的
SecretKey
,还是创建一个密钥并使用它完成所有工作

换句话说,
userOne
的信息应该通过
secretKeyEntryOne
userTwo
-
secretKeyEntryTwo
进行加密/解密,
userThree
-
secretKeyEntryThree
所有用户的所有信息都应使用
globalSecretKey
加密/解密

如果你不明白我这个问题的意思,请告诉我,我会修改我的问题

提前感谢。

TL;DR:有许多密码(
SecretKey
)。它提供了更好的安全性


从安全角度来看,最好为每个用户提供一个
SecretKey
,因为这样可以减少在发生数据泄露时,您的
globalSecretKey
被泄露的所有用户信息被泄露的机会。拥有多个
SecretKey
可以更好地保护这些信息,因为最坏的情况是只有一个客户的信息被破坏

如果您不希望有一百万个不同的组合,您可以有一个列表(大约500个;更多===更好),其中包含随机选择的
密码。这降低了所有用户数据被破坏的可能性。虽然如果您有空间将每个用户存储为一个特殊密钥,但我建议您这样做