Tag: pkcs#7

从java中的.p7b文件中提取单个.cer证书

我是Cryptography的新手,所以如果您认为这是一个基本问题,请原谅 我有一个.p7b文件,我需要读取并提取单个公共证书,即.cer文件并将其存储在密钥库中。 我不必担心持久存在密钥存储区,因为已经有一个服务将.cer文件作为byte []接收并保存。 我想知道的是,我如何阅读.p7b并提取单个.cer文件? 我知道可以通过openSSL命令完成,但我需要在java中做同样的事情。 我还需要读取Issued By名称,因为它将用作持久保存证书的唯一键。 提前致谢

PKCS#7登录并validation标志

我正在尝试使用PKCS#7签名并validation标志。 我正在跟着用Java开始加密的书。 我已经编写了示例代码来签名和validation。 当我试图附加签名并将其写入文件然后尝试validation我得到exception时(下面给出例外) 我想知道如何将这个签名数据写入文件? 我是否还需要将密钥库分享给将validation该标志的第二人? org.bouncycastle.cms.CMSException:message-digest属性值与计算值不匹配 在org.bouncycastle.cms.SignerInformation.doVerify(未知来源) at org.bouncycastle.cms.SignerInformation.verify(Unknown Source) at org.bouncycastle.cms.SignerInformation.verify(Unknown Source) 在com.inc.cms.test.bc.Test.isValidSignature(Test.java:150) 在com.inc.cms.test.bc.Test.verifyData(Test.java:120) 在com.inc.cms.test.bc.Test.main(Test.java:78) 非常感谢 我的代码如下 请帮我解决这个问题。 非常感谢 `package com.inc.cms.test.bc; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.math.BigInteger; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.KeyStore; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; import java.security.cert.CertPathBuilder; import java.security.cert.CertStore; import java.security.cert.Certificate; import java.security.cert.CollectionCertStoreParameters; import java.security.cert.PKIXBuilderParameters; import java.security.cert.PKIXCertPathBuilderResult; […]

从文件摘要创建pkcs7签名

目前我有一个客户端 – 服务器应用程序,给定一个PDF文件,签名(使用服务器证书),将签名附加到原始文件并将输出返回给客户端(所有这些都是通过PDFBox实现的)。 我有一个签名处理程序,这是我的外部签名支持(其中内容是PDF文件) public byte[] sign(InputStream content) throws IOException { try { System.out.println(“Generating CMS signed data”); CMSSignedDataGenerator generator = new CMSSignedDataGenerator(); ContentSigner sha1Signer = new JcaContentSignerBuilder(“Sha1WithRSA”).build(privateKey); generator.addSignerInfoGenerator( new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().build()) .build(sha1Signer, new X509CertificateHolder(certificate.getEncoded()))); CMSTypedData cmsData = new CMSProcessableByteArray(IOUtils.toByteArray(content)); CMSSignedData signedData = generator.generate(cmsData, false); return signedData.getEncoded(); } catch (GeneralSecurityException e) { throw new IOException(e); } […]

使用PKCS#7加密

我正在使用Bouncy Castle提供的库来加密,解密,签名和validation签名。 我这样做 1.加密数据 2.签署数据 3.将带符号的字节写入文件 4.从文件中读取带符号的字节 5.validation签名 6.解密数据 我参考了Beginning Cryptography with Java 当我validation数据时,我的问题出在第5步 org.bouncycastle.cms.CMSException:message-digest属性值与计算值不匹配 我的代码如下 import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.math.BigInteger; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.KeyStore; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; import java.security.cert.CertPathBuilder; import java.security.cert.CertStore; import java.security.cert.Certificate; import java.security.cert.CollectionCertStoreParameters; import java.security.cert.PKIXBuilderParameters; import java.security.cert.PKIXCertPathBuilderResult; import java.security.cert.TrustAnchor; import java.security.cert.X509CertSelector; import […]

如何用Java编码PKCS7中的值?

我想使用PKCS7加密来与Java和Java Servlet一起编码一个值。 是否有可用的库和引用来进行加密? 我可以遵循的任何样本或教程? 谢谢。

使用iText从PCKS7签名的PDF文件中获取哈希/摘要

我正在编写一个Java Web服务,用来自网络中某些客户的iText签署PDF文档。 文档正确签名,可以使用外部工具进行validation。 但是,由于某些法律限制,为了将此文档存储在官方文档库中,我必须提供签名中的哈希/摘要消息。 我已经尝试了几乎任何东西来获取该哈希值,但我能得到的最接近的是使用此代码片段获取整个签名(CERT + HASH / DIGEST + TIMESTAMP)作为字符串(原谅字符串和[1]因为我我只是测试如何做到这一点: PdfReader reader = new PdfReader(path); File temp = TempFileManager.createTempFile(“aasd2sd”, “asdasda222cff”); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(temp)); stamper.setRotateContents(false); PdfString firma = (PdfString) stamper.getAcroFields().getSignatureDictionary(“Signature1”).get((PdfName)stamper.getAcroFields().getSignatureDictionary(“Signature1”).getKeys().toArray()[1]); 据我所知,我得到了一个DER-enconded PKCS7签名。 但是,我不知道如何解读/读取这些信息以便达到目的。 任何想法? 谢谢,克里斯。

将文本加密为AES / CBC / PKCS7Padding

我正在开发一个Web应用程序来使用java 6加密一些文本。 我必须做的加密是CBC模式的AES(Rijndael),带有PKCS7填充和128位密钥。 我看到一篇文章解释了如何以与我必须做的相同的方式进行加密,但是使用了PKCS5填充。 这篇文章的链接在这里: https://bit502.wordpress.com/2014/06/27/codigo-java-encriptar-y-desencriptar-texto-usando-el-algoritmo-aes-con-cifrado-por-bloques-cbc-de-128-比特/ 我改变 private final static String cI = “AES/CBC/PKCS5Padding”; 至 private final static String cI = “AES/CBC/PKCS7Padding”; 但Java无法为此找到提供商。 有人能告诉我怎么做吗?

使用JAVA中的PKCS#7对数据进行签名

我想使用PKCS#7签署一个文本文件(可能是.exe文件或将来的其他文件)并使用Javavalidation签名。 我需要知道什么? 我在哪里可以找到API( .jar和文档)? 为了签署数据和validation数据,我需要遵循哪些步骤? 如果可能,请提供代码段。

用JavavalidationPKCS#7证书

在Java中需要一些加密例程的帮助。 鉴于PKCS#7签名,我想validation它包含的所有证书对可信商店。 我假设签名中包含的所有证书都以正确的顺序形成有效的证书路径(或链,无论如何),以便这样做 最顶层(#0)是签名证书; 下一个(#1)是一个中间证书,用于签署#0; 下一个(#2)是另一个中间证书,用于签署#1; 等等。 最后一个证书(#N)由CA签名。 这就是我到目前为止所做的事情: // Exception handling skipped for readability //byte[] signature = … pkcs7 = new PKCS7(signature); // `sun.security.pkcs.PKCS7;` // *** Checking some PKCS#7 parameters here X509Certificate prevCert = null; // Previous certificate we’ve found X509Certificate[] certs = pkcs7.getCertificates(); // `java.security.cert.X509Certificate` for (int i = 0; i < certs.length; […]

AES-256和PKCS7Padding在Java中失败

我有几个库,C#,PHP和Android,它们都以相同的方式加密/解密字符串,因此它们彼此兼容,即C#写入并加密数据到数据库,PHP可以成功解密它并返回原始字符串。 我现在需要使用标准的Java应用程序做同样的事情,所以我从我的Android库中获取代码并需要库,但我得到了一个例外。 据我所知,代码不是特定于Android的,所以它应该不是问题。 以下是我的加密function public static String encrypt(String plainPasword) { String password = “”; try { SecretKeySpec key = new SecretKeySpec(“hcxilkqbbhczfeultgbskdmaunivmfuo”.getBytes(“US-ASCII”), “AES”); IvParameterSpec iv = new IvParameterSpec(“ryojvlzmdalyglrj”.getBytes(“US-ASCII”)); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS7Padding”); cipher.init(Cipher.ENCRYPT_MODE, key, iv); byte[] encoded = cipher.doFinal(plainPasword.getBytes()); password = new String(Base64.encodeBase64(encoded)); } catch (Exception ex) { System.err.println(“Encryption Exception: ” + ex.toString()); } return password; […]