Java 如何使用scrypt用密码加密私钥
如何使用scrypt对java中使用Java 如何使用scrypt用密码加密私钥,java,cryptography,key,bouncycastle,scrypt,Java,Cryptography,Key,Bouncycastle,Scrypt,如何使用scrypt对java中使用KeyPairGenerator创建的私钥进行加密?我想用密码保护私钥,这样就没有人可以用私钥解密我加密的数据,即使他有私钥和数据。 (如果你没有其他建议,我会使用BouncyCastleAPI) 感谢使用KeyPairGenerator,您可以使用PBEKey和参数对密码支持的私钥进行加密 KeyPairGenerator generator = KeyPairGenerator.getInstance(); int count = 5; keyPair
KeyPairGenerator
创建的私钥进行加密?我想用密码保护私钥,这样就没有人可以用私钥解密我加密的数据,即使他有私钥和数据。
(如果你没有其他建议,我会使用BouncyCastleAPI)
感谢使用KeyPairGenerator,您可以使用PBEKey和参数对密码支持的私钥进行加密
KeyPairGenerator generator = KeyPairGenerator.getInstance();
int count = 5;
keyPairGenerator.initialize();
KeyPair kPair = generator.genKeyPair();
byte[] privateKey = kPair.getPrivate().getEncoded();
String stringPb = "PBEWithSHA1AndDESede";
String password = "your_own_password";
SecureRandom rndm = new SecureRandom();
PBEParameterSpec paramSpec = new PBEParameterSpec(salt, count);
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory factory = SecretKeyFactory.getInstance();
SecretKey pbeKey = factory.generateSecret(keySpec);
Cipher cipher = Cipher.getInstance(stringPb);
cipher.init(ENCRYPT_MODE, pbeKey, paramSpec);
byte[] text = cipher.doFinal();
AlgorithmParameters parametres = AlgorithmParameters.getInstance();
parametres.init(paramSpec);
EncryptedPrivateKeyInfo encinfo = new EncryptedPrivateKeyInfo(parametres, text);
将其放入
密钥库
。这就是他们的目的。我不知道在私钥保护、Bouncycastle或任何其他库中是否有对scrypt的方便支持。然而,PKCS#12和PKCS#8都支持PBKDF2中的一个很好的替代方案。PBKDF2可能不如基于scrypt的解决方案好,但仍然相当不错。PKCS#12现在是Java密钥存储库的首选格式,因此,正如前面的评论所指出的,这很可能是一个方向。