如何在java(bouncycastle)中设置签名大小?

sf6xfgos  于 2023-01-07  发布在  Java
关注(0)|答案(1)|浏览(131)

有没有办法设置签名大小,而使DER文件使用弹跳城堡。
现在我正在使用org.bouncycastle制作证书文件。下面是我的代码。它工作正常,但我无法处理签名长度。

对于SHA256WITHRSA签名算法,长度是静态的,2048 RSA密钥为256,1024 RSA密钥为128。

  • 我想创建一个公钥为2048、签名为128的证书 *
Security.addProvider(new BouncyCastleProvider());
KeyPair keyPair = createKeyPair();

JcaX509v3CertificateBuilder certBuilder = new JcaX509v3CertificateBuilder(new X500Name("CN=Issuer"), BigInteger.ONE, new GregorianCalendar().getTime(), new GregorianCalendar().getTime(), new X500Name("CN=Subject"), keyPair.getPublic());
            
JcaContentSignerBuilder signerBuiler = new JcaContentSignerBuilder("SHA256WITHRSA").setProvider(BouncyCastleProvider.PROVIDER_NAME);
ContentSigner contentSigner = signerBuiler.build(keyPair.getPrivate());
X509Certificate certificate = new JcaX509CertificateConverter().setProvider(BouncyCastleProvider.PROVIDER_NAME).getCertificate(certBuilder.build(contentSigner));

certificate.verify(keyPair.getPublic());
System.out.println( certificate);

如下所示,它有2048个公钥,但签名大小为128字节。这是我想制作的DER文件。

11dmarpk

11dmarpk1#

RSA运算的输出总是所使用的RSA密钥的大小。2048位等于256字节。使用256字节的密钥不可能得到128字节的结果。

相关问题