标签: bouncycastle

使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 进行 Java 加密无法在 .NET 中解密

我们有一个要求,在 Java 中进行加密,在 .NET 中进行解密。问题在于 .NET 中的非对称解密、Java 中使用的算法、模式和填充,而加密为“RSA/ECB/OAEPWithSHA-256AndMGF1Padding”。在.NET上,我尝试以各种不同的方式解密RsaCng、Rsa、Chilkat Rsa、带有OAEP填充的Bouncy Castle,但到目前为止没有任何效果。下面是代码片段。只有当Java的加密方式改为“RSA/ECB/OAEPWithSHA-1AndMGF1Padding”时,.NET才能够解密,但出于安全原因,Java无法更改加密方式。我们使用 PEM 文件进行解密,同时使用 CERT 进行加密。请让我们知道解决该问题的最佳方法。这与创建基于 SHA256 哈希的 PEM 文件有关吗?如果有人能帮助我,我将不胜感激。

下面提到了错误。RsaCng 和 Rsa:- 参数不正确。RsaCryptoService:- 解码 OAEP 填充时发生错误。Bouncy Castle:- 它给出了一个带有符号的 alpha-unicode 字符串。Chilkat:- 返回 null。

非对称加密的 Java 代码段:-

                 // Encrypt the symetric key
                 X509Certificate cert = ConduentCertificateLocator.getConduentCertificate();
                 PublicKey certKey = cert.getPublicKey();
                 Cipher c2 = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING");
                 //Cipher c2 = Cipher.getInstance("RSA");
                 c2.init(Cipher.ENCRYPT_MODE, certKey);
                 byte[] inputCertKey = key.getEncoded();
                 byte[] encryptedKey = c2.doFinal(inputCertKey);
                 String encryptedKeyUrl = encodeToURL(encryptedKey);
Run Code Online (Sandbox Code Playgroud)

用于非对称解密的.NET 片段:- 我们确实尝试了几种不同的方法。下面是代码。

A。RSAC加密服务

           using (RSACryptoServiceProvider csp = new RSACryptoServiceProvider())
            { …
Run Code Online (Sandbox Code Playgroud)

.net cryptography rsa bouncycastle rsacryptoserviceprovider

2
推荐指数
1
解决办法
6783
查看次数

Java的RSA实现,BC的替代

Bouncy Castle附带的RSA实现仅允许加密单个数据块.RSA算法不适合流数据,不应该以这种方式使用.在这种情况下,您应该使用随机生成的密钥和对称密码加密数据,之后您应该使用RSA加密随机生成的密钥,然后将加密数据和加密随机密钥发送到另一端,他们​​可以反转过程(即,使用他们的RSA私钥解密随机密钥,然后解密数据).

我不能使用使用对称密钥的解决方法.那么,除了Bouncy Castle之外,还有RSA的其他实现吗?

java rsa bouncycastle

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

弹力城堡没有此类提供者例外

我已经在Android和Java中将充气城堡城堡文件添加到了我的应用程序类路径中。这是我在两者中都使用过的代码。但是它似乎无法识别提供者“ BC”。

SecureRandom sr1=new SecureRandom().getInstance("SHA1PRNG", "BC");
      System.out.println(sr1.getProvider());
      sr1.setSeed(12);
      byte[] a=new byte[0];
      sr1.nextBytes(a);
      int ai=a[0];
      System.out.println(ai);
Run Code Online (Sandbox Code Playgroud)


它在android和java中都引发以下异常:

java.security.NoSuchProviderException: no such provider: BC
Run Code Online (Sandbox Code Playgroud)


如何纠正呢?
我没有在策略文件中添加提供程序。之后,我得到以下异常。

java.security.NoSuchAlgorithmException: no such algorithm: SHA1PRNG for provider
 BC<br>
Run Code Online (Sandbox Code Playgroud)

这是否意味着充气城堡不提供“ SHA1PRNG”算法的实现?但是我导入有弹性城堡的全部原因是在android和java中都有一个公共提供程序,因此使用相同种子生成的随机数序列在android和java中都相同。

java android bouncycastle

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

iText SpongyCastle错误

我已尝试使用各种版本的itext,包括带有试用许可证的itextgoogle,当我尝试运行我的代码时,我不断收到以下错误:

     InputStream object = this.getResources().openRawResource(R.raw.itextkey);
     LicenseKey.loadLicenseFile(object);
     Document document = new Document();
     try {
             PdfWriter.getInstance(document, new FileOutputStream(android.os.Environment.getExternalStorageDirectory() + java.io.File.separator + java.io.File.separator + "testPDF.pdf"));
             document.open();
             document.add(new Paragraph("testing"));
     } catch (DocumentException de) {
             System.err.println(de.getMessage());
     } catch (IOException ioe) {
             System.err.println(ioe.getMessage());
     }
     document.close();
Run Code Online (Sandbox Code Playgroud)

错误是:

04-26 20:18:12.761: E/dalvikvm(1927): Could not find class 'org.spongycastle.cert.X509CertificateHolder', referenced from method com.itextpdf.text.pdf.PdfReader.readDecryptedDocObj
04-26 20:18:12.761: W/dalvikvm(1927): VFY: unable to resolve new-instance 2251 (Lorg/spongycastle/cert/X509CertificateHolder;) in Lcom/itextpdf/text/pdf/PdfReader;
Run Code Online (Sandbox Code Playgroud)

我听说我需要自己构建iText,但我不知道从哪里开始/如何做到这一点.我发现的罐子的文件名不是很具描述性.

android bouncycastle itext spongycastle

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

用于JDK 1.7和PKCS库的Bouncycastle

我正在尝试找到适用于JDK 1.7的Bouncycastle的pkcs库(pkcs10 CSR调用).有人可以告诉我哪个jar是什么,以及在pom.xml中添加的maven存储库是什么?我遇到了这个网站:http://mvnrepository.com/artifact/org.bouncycastle并且对版本数量感到困惑.我查看了bcmail jar(对于jdk 1.5),但没有找到JDK 1.7.

请帮忙.谢谢!

bouncycastle maven

1
推荐指数
1
解决办法
2万
查看次数

BouncyCastle:从证书中提取公钥导致NullPointerException

import com.security.crypto.Configuration.Properties;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.x509.Certificate;
import org.bouncycastle.jce.provider.X509CertificateObject;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.PublicKey;
import java.security.cert.X509Certificate;

/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) throws Exception {

 String df="MIID/TCCAuWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMRQwEgYDVQQDEwtleGFtcGxlLm9yZzELMAkGA1UEBhMCR1IxDzANBgNVBAgTBkF0aGVuczEPMA0GA1UEBxMGQXRoZW5zMQ0wCwYDVQQKEwRUZXN0MQ0wCwYDVQQLEwRUZXN0MB4XDTE2MDkxODE5NDkzMFoXDTE3MDkxODE5NDkzMFowYzEUMBIGA1UEAxMLZXhhbXBsZS5vcmcxCzAJBgNVBAYTAkdSMQ8wDQYDVQQIEwZBdGhlbnMxDzANBgNVBAcTBkF0aGVuczENMAsGA1UEChMEVGVzdDENMAsGA1UECxMEVGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIFsgF86ymuWPEMCZ5Jlj3pLeq2egQ7aiXD3pwhJQemwoC7wSUoViTt3vnNxVVd7HLQZE4igtCI/ZHJhCf5LKoJqxsAfNjq+KK7/9phznX9MroMpluF8LCKDH6otF7rqknLvI72M+oPYkxTYJv02Wb4+lGWn4aYpUh6XmQPDOW6Yoz7RfrY6t0skJMVGqQhg37n/xHrqcc8KmEy0SBpbsRPi6q8Vwsdbd0MiqWt9NdzfBz6kw8WjMSDAf+H4Nwhydgh4sXxSo2zQHobY+QrEr+RLJI++YsqgBeXYeAWbdKb9C6S16VIe8PNi4EqFYtoOzZcMWDl+1xACiFQemor9FRkCAwEAAaOBuzCBuDAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIC9DA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwEQYJYIZIAYb4QgEBBAQDAgD3MCwGA1UdEQQlMCOGG2h0dHA6Ly9leGFtcGxlLm9yZy93ZWJpZCNtZYcEfwAAATAdBgNVHQ4EFgQUwOcGIZDvBxPH5FJ2ZKo6YoK1oIswDQYJKoZIhvcNAQEFBQADggEBAARO4d3/JNRmTg33HQ2OigiQ3yh/RCd2u9tF39EmU1tpg/nGMnVql+c+M7TnX51vqGJ2oX5nCY/vM2LgUGCqRcuZLRk2u0SzlaI1QlEPLLnsoCes5rU1tVm8xSUOVYp809F8Eiih0A+NZWbPuT83UgiJVtYOvvEWsnlpErkeP4KblS3z532651pTC/RzKO1saRPx4kBI7QAGogEtjbhvMX8099g0mBHvXcVxrIMTUY4sKntMlYQ4vQ4OxBTEXhKwEW1WJh8orXl3E0EkTFhbjkFE9gbqsS3h4ridMcmahoeIwnwckaU5zxgJ2t3ih35FzZXBmfv3qRgFG81Gdi+NH1U=";
    X509Certificate cert = loadCertificate(df);
    System.out.println(cert.getSigAlgName());//SHA1withRSA
    PublicKey key=cert.getPublicKey();
    System.out.println(key.getAlgorithm());//java.lang.NullPointerException
    }

    public static X509Certificate loadCertificate(String asn1)throws IOException, GeneralSecurityException
    {
        byte []data=Base64.decodeBase64(asn1.getBytes(Properties.CHAR_ENCODING));
        ByteArrayInputStream inStream = new ByteArrayInputStream(data);
        ASN1InputStream derin = new ASN1InputStream(inStream);
        ASN1Primitive certInfo = derin.readObject();
        ASN1Sequence seq = ASN1Sequence.getInstance(certInfo); …
Run Code Online (Sandbox Code Playgroud)

java cryptography bouncycastle

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

通过BouncyCastle阅读JKS

我有一个Java KeyStore(JKS),需要与BouncyCastle一起阅读。

我已BC在提供商列表顶部添加了提供商:

Security.insertProviderAt(new BouncyCastleProvider(), 1);
Run Code Online (Sandbox Code Playgroud)

如果我以这种方式创建KeyStore:

final KeyStore keystore = KeyStore.getInstance("JKS", "BC");
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

java.security.KeyStoreException:找不到JKS

如果我未指定提供程序,则将使用Sun提供程序创建KeyStore keystore.aliases()并将包含EmptyEnumeration

正如我在主题中看到的那样,BouncyCastle可以与JKS合作

如何通过BouncyCastle阅读JKS?

java bouncycastle keystore

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

具有两个BouncyCastle罐的java.lang.NoClassDefFoundError

我在项目中包含了2个BC罐:bcpkix-jdk15on-1.47.jarbcprov-jdk15on-157.jar

作为代码的第一行,我添加了:

Security.addProvider(new BouncyCastleProvider());  
Run Code Online (Sandbox Code Playgroud)

在线发生异常:

JcaPKCS10CertificationRequest csrNew = new JcaPKCS10CertificationRequest(request);

By the way it is imported: import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest; 
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到:

线程“ AWT-EventQueue-0”中的异常java.lang.NoClassDefFoundError:实现时的org / bouncycastle / jcajce / JcaJceHelper.Util.generateCSR(Util.java:396)

NetBeans定期发现类,但是在我运行项目时发生异常。

有什么办法可以定期包含这两个BouncyCastle罐子吗?

java bouncycastle

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

如何使用Java中的充气城堡以ASN1格式导出X509证书?

如何导出X509CertificateASN.1格式的?我找到了如何使用扩展名导出到DERPEM.cer但是找不到如何导出到ASN.1格式。谁能帮我?

这是我的PEM:

JcaPEMWriter pemWrt = new JcaPEMWriter(new FileWriter(path + ".cer"))
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(loadCertificate);
pemWrt.writeObject(certificate);
pemWrt.flush();
pemWrt.close();
Run Code Online (Sandbox Code Playgroud)

这是我的DER:

X509Certificate certificate = (X509Certificate) keyStore.getCertificate(loadCertificate);
FileOutputStream fileWrite = new FileOutputStream(new File(path + ".cer"));
fileWrite.write(certificate.getEncoded());
fileWrite.flush();
fileWrite.close();
Run Code Online (Sandbox Code Playgroud)

java bouncycastle asn.1 x509certificate

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

使用itext无法正常工作的数字签名验证

我正在使用itext库验证数字签名的pdf,以下示例可在https://developers.itextpdf.com/examples/security/digital-signatures-white-paper/digital-signatures-chapter-5站点上找到.我在验证数字签名文档时遇到以下错误.任何人都可以帮助解决这个问题.

Exception in thread "main" ExceptionConverter: java.security.NoSuchAlgorithmException: SHA256with1.2.840.10045.4.3.2 Signature not available
at java.security.Signature.getInstance(Signature.java:229)
at com.itextpdf.text.pdf.security.PdfPKCS7.initSignature(PdfPKCS7.java:697)
at com.itextpdf.text.pdf.security.PdfPKCS7.<init>(PdfPKCS7.java:459)
at com.itextpdf.text.pdf.AcroFields.verifySignature(AcroFields.java:2420)
at com.itextpdf.text.pdf.AcroFields.verifySignature(AcroFields.java:2373)
at nic.test.C5_01_SignatureIntegrity.verifySignature(C5_01_SignatureIntegrity.java:24)
at test.ExtractSignInfor.inspectSignature(ExtractSignInfor.java:95)
at test.ExtractSignInfor.inspectSignatures(ExtractSignInfor.java:135)
at test.ExtractSignInfor.main(ExtractSignInfor.java:63)
Run Code Online (Sandbox Code Playgroud)

java bouncycastle itext digital-signature

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