Java RSA签名机制等同于带有SHA-256的emsa-pkcs1-v1_5

时间:2017-03-24 17:00:18

标签: java rsa sign sha pkcs#1

我需要使用带有SHA-256EMSA-PKCS1-V1_5编码以及RSA私钥的Java对数据进行签名。

此外,我需要在EMSA-PKCS1-V1_5中使用填充类型1,这意味着签名前的数据应附加零(不是随机数据,如填充类型2)。

相同数据上的签名输出应该相同。

Java在这种机制中的作用是什么?

我尝试使用SHA256withRSA进行签名,但相同数据的输出始终不同。

修改

我正在使用以下代码(data,sigAlg和cert始终相同,所以我假设签名应始终相同):

CMSSignedDataStreamGenerator generator = new CMSSignedDataStreamGenerator();
String sigAlg = "SHA256withRSA";
ContentSigner contentSigner = new JcaContentSignerBuilder(sigAlg).setProvider("BC").build(getPrivateKey());
generator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().setProvider("BC").build()).build(contentSigner, cert));
generator.addCertificates(new JcaCertStore(certs));
OutputStream out = generator.open(responseOutputStream);
out.write(data);
out.close();

0 个答案:

没有答案