小编Fel*_*ich的帖子

如何在 Java 中正确使用 RSASSA-PSS 签名?

我需要在java中编写这个openssl-sign-instruction。

openssl dgst -sha256 -binary -out "signaturefile".sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign "privatekey".pem "file2sign"

此说明来自 Bundeszentralamt für Steuern (BZSt) - ELMA-File-Upload。

Bitte stellen Sie die Signaturerstellung daher auf RSASSA-PSS mit folgenden 参数:

Hashverfahren:SHA-256

掩码生成函数:MGF1 mit SHA-256 Länge des Salts:32 字节尾部字段:0xBC

我已经尝试了不同的签名算法(有和没有 bouncycastle),但没有得到与 openssl 相同的签名结果。

这就是我正在做的。

public class SignTest {

    public static void main(String[] args){
        Security.addProvider(new BouncyCastleProvider());

        Signature signatureSHA256Java = Signature.getInstance("SHA256withRSA/PSS");
        signatureSHA256Java.setParameter(new PSSParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, 32, 1));

        signatureSHA256Java.initSign(KeyManagerHelper.getPrivateKeyFromKeyStore("privatekey"));
        signatureSHA256Java.update(byteArray);
        byte[] signSHA256Java = signatureSHA256Java.sign();

        // after that I compare the Java-sign-bytearry with …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle signature

5
推荐指数
1
解决办法
5230
查看次数

标签 统计

bouncycastle ×1

java ×1

signature ×1