我们的安全部门希望我们使用 256 位加密来加密 SSN、用户名等,因此我们决定使用 JASYPT,示例代码如下:
encryptor = new StandardPBEStringEncryptor();
encryptor.setProvider(new BouncyCastleProvider());
encryptor.setAlgorithm("PBEWITHSHA256AND256BITAES-CBC-BC");
encryptor.setPassword(OUR_KEY)
encryptor.encrypt("TEXT TO ECNCRYPT")
我们注意到的问题是,当我们的应用程序从本地计算机创建加密记录时,app-dev 服务器上的应用程序无法解密它,反之亦然,即使密钥相同。似乎 JASYPT 正在盐中添加一些特定于机器的信息(Mac 地址等)。
即使使用FixedStringSaltGenerator
或ZeroSaltGenerator
没有帮助。这给我们带来了一个问题,因为如果我们曾经将生产服务器迁移到另一台机器,或者使用产品数据刷新生产前数据,我们可能需要几百万年才能恢复信息。
安全部门希望我们使用众所周知的库,而不是自己制定解决方案。有人可以就这个问题说明一下我们如何生成可以使用 jasypt 256 位加密在不同机器上解密的加密字符串,或者当我们用产品数据刷新 pre-prod 数据库时,我们如何能够恢复名称等通过不同的服务器加密?
任何有用的见解将不胜感激。