gpt4 book ai didi

Java 等效于 C++ Botan 函数调用

转载 作者:行者123 更新时间:2023-11-30 04:46:09 34 4
gpt4 key购买 nike

我有一个与此类似的 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();
}

私钥生成为

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)?

最佳答案

我能够使用以下算法和 BC 并按如下方式设置参数规范来解决此问题:

Signature signature = Signature.getInstance("RawRSASSA-PSS", "BC");
PSSParameterSpec pssParameterSpec = new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, KEY_AUTHORIZATION_INIT_SIGN_SALT_SIZE,
PSSParameterSpec.DEFAULT.getTrailerField());
signature.setParameter(pssParameterSpec);

关键点是使用 RAW 算法对哈希进行签名。我从这篇文章中得到了提示 RAW signer

关于Java 等效于 C++ Botan 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56946697/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com