【发布时间】:2019-11-18 15:56:03
【问题描述】:
我有一个类似这样的 C++ 代码:
Botan::AutoSeeded_RNG botan_rng;
Botan::RSA_PrivateKey private_key(botan_rng, 2048);
Botan::PK_Signer botan_pss_signer(private_key, botan_rng, "PSSR_Raw(SHA-256,MGF1,32)");
我想做的是在 Java 中实现相同的功能。到目前为止我尝试过的如下:
Signature rsa = null;
try {
rsa = Signature.getInstance("SHA256withRSAAndMGF1", "BC");
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
e.printStackTrace();
}
try {
rsa.initSign((PrivateKey)privateKey, new SecureRandom());
} catch (InvalidKeyException e) {
e.printStackTrace();
}
而privateKey生成为
KeyPairGenerator kpg = null;
try {
kpg = KeyPairGenerator.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
kpg.initialize(2048);
KeyPair kp = kpg.generateKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();
问题是我的做法是否正确?还是我的 Java 代码中缺少某些内容?特别是关于随机生成器部分,我不确定 Java SecureRandom 是否在做与Botan::AutoSeeded_RNG 类似的事情,而且我在 BC 中使用的算法也不确定它是否与 PSSR_Raw(SHA-256,MGF1,32) 等效?
【问题讨论】:
标签: java c++ bouncycastle botan