Tag: bouncycastle

与充气城堡签订的X509证书无效

我花了很长时间才使java签署CSR,最后我能够做到这一点,但openssl告诉它无效。 使用openssl签署的相同CSR通过validation步骤。 全部是相同的x509版本(1),没有扩展名,Subject,Issuer是相同的。 我怀疑问题是主题DN(特别是电子邮件)或日期。 validation: openssl verify -verbose -CAfile src/test/resources/ca.cer.pem o.cer.pem o.cer.pem: OK openssl verify -verbose -CAfile src/test/resources/ca.cer.pem client.cer.pem client.cer.pem: C = RU, ST = Moscow, L = Moscow, O = Hoofs, OU = IT, CN = Danee Yaitskov error 20 at 0 depth lookup:unable to get local issuer certificate 文件大小类似: 1229 Jul 28 12:45 […]

如何将PEM编码的椭圆曲线公钥加载到Bouncy Castle?

我有一个PEM编码的Elliptic Curve公钥,我正在尝试加载到Bouncy Castle中,到目前为止我尝试的所有内容都失败了。 这是我正在尝试加载的密钥的示例: —–BEGIN PUBLIC KEY—– MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBhsFCcWY2GaiN1BjPEd1v+ESKO6/0 D0sUR4y1amHnOr3FZx6TdqdoSBqxownQrnAKGCwagGxUb7BWwPFgHqKQJHgBq+J7 F+6m5SKAEL1wS5pqya91N7oudF3yFW8oZRE4RQRdSLl3fV2aVXKwGDXciwhUhw8k x5OS4iZpMAY+LI4WVGU= —–END PUBLIC KEY—– 它由NodeJS Crypto模块生成,曲线名称为secp521r1。 它稍后由npm包密钥编码器编码到PEM中。 我已经在JavaScript(实际上是ClojureScript)中使用它来validation签名,现在我需要使用Javavalidation服务器上的签名(实际上是Clojure)。 我尝试从密钥中删除守卫,转换为byte []并创建X509EncodedKeySpec。 那没用。 它崩溃了: InvalidKeySpecException encoded key spec not recognised org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic (:-1) 我用来加载密钥的代码: KeyFactory. getInstance(“ECDSA”, “BC”). generatePublic(new X509EncodedKeySpec(publicKey.getBytes())) 以防万一,这是我的Clojure代码: (-> (KeyFactory/getInstance “ECDSA”) (.generatePublic (X509EncodedKeySpec. (.getBytes public-key)))) 我也尝试过PKCS8EncodedKeySpec,但是我收到了错误: InvalidKeySpecException key spec not recognised org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic (:-1) 我也在这里试过这个方法: https ://gist.github.com/wuyongzheng/0e2ed6d8a075153efcd3#file-ecdh_bc-java-L47-L50但是在运行decodePoint时我收到错误: […]

麻烦整合BouncyCastle Jar

好的,我现在要说我对Java知之甚少。 我得到了Bouncy Castle Jar,并告诉我将包含我需要做的任务。 Jar文件是bcprov-jdk15on-147.jar 。 我也是在我学校维护的Unix机器上做这个,所以我不能进去玩所有的Java文件。 当我使用Javac编译我的类(特别是我使用命令javac -classpath bcprov-jdk15on-147.jar encrypt.java )时,它编译时没有错误,但是当我以后使用命令java encrypt运行程序时,我得到了此错误消息: Exception in thread “main” java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 我的Jar文件位于我的主文件夹中,包含我的所有其他文件,以防万一它必须去特别的地方,这就是我没有做的事情。 当我做java -classpath bcprov-jdk15on-147.jar encrypt这是我得到的错误: Exception in thread “main” java.lang.NoClassDefFoundError: encrypt Caused by: java.lang.ClassNotFoundException: encrypt at java.net.URLClassLoader$1.run(URLClassLoader.java:200) […]

重新部署应用程序时无法加载Bouncycastle

我按照这个指示添加bouncycastle: http : //www.bouncycastle.org/wiki/display/JA1/Provider+Installation但我还有一个问题。 有时,当我重新部署我的应用程序时,找不到此提供程序,因此我的应用程序抛出exception。 每100次重新部署(可能更少)只发生一个问题。 当我重新启动我的服务器 – weblogic然后它再次开始工作。 我将非常感谢有关此问题发生的任何建议 编辑: 我在上面的链接中使用这两种方法,因为当我只使用其中一种然后它不起作用我添加到java.security这个提示,然后在我的课程中我注册了这个提示: static { Security.addProvider(new BouncyCastleProvider()); }

如何使用PDFBox对动态创建的PDF文档进行数字签名?

对不起! 我在java中很穷。 请在任何我错的地方纠正我,并在我穷人的哪个地方改善! 我正在尝试使用PDFBox使用以下程序对动态创建的pdf进行数字签名: 该计划的任务: (i)创建模板PDF (ii)更新ByteRange,xref,startxref (iii)为签名创建构建原始文件 (iv)创建独立的包络数字签名 (v)通过连接原始文档部分构建数字签名PDF文档 – I,独立签名和原始PDF部分 – II 观察: (i)pdfFileOutputStream.write(documentOutputStream.toByteArray()); 使用Visible Signature创建模板PDF文档。 (ii)它创建一些PDF签名文档但有错误(a)无效令牌和(b)几个解析器错误 (现在在MKL的有力指导下纠正了!) 请建议我以下内容: (i)如何在layer2上的Visible Signature中添加签名文本。 提前致谢! package digitalsignature; import java.awt.geom.AffineTransform; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.security.Signature; import java.util.ArrayList; import org.bouncycastle.cert.X509CertificateHolder; import org.bouncycastle.cert.jcajce.JcaCertStore; import org.bouncycastle.cms.CMSProcessableByteArray; import org.bouncycastle.cms.CMSTypedData; import org.bouncycastle.cms.SignerInfoGenerator; import org.bouncycastle.cms.SignerInfoGeneratorBuilder; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; import org.bouncycastle.util.Store; import […]

用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; […]

使用Bouncy Castle的C#RSA解密

我得到了一个Base64编码加密字符串,它使用Bouncy Castle在Java中加密。 下面的示例Java代码段: Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); cipher.init(Cipher.ENCRYPT_MODE, key.getPublic()); byte[] encryptedText = cipher.doFinal(“xxxxx|xxxxx”.getBytes(“UTF-8”)); String encodedText = new BASE64Encoder().encode(encryptedText); 我需要使用Bouncy Castle解密生成的字符串,但是在C#中,我已经获得了关于如何在Java中执行此操作的代码片段,但我无法将其转换为C#(原因是我们正在构建.net站点,以及将成为Java站点中的iFrame.Java站点将把RSA加密字符串传递给.NET站点。 下面解密的示例Java代码: Cipher cipherDec = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); cipherDec.init(Cipher.DECRYPT_MODE, key.getPrivate()); byte[] decodedText = new BASE64Decoder().decodeBuffer(encodedText); byte[] decryptedText = cipherDec.doFinal(decodedText); String finalValue = new String(decryptedText, “UTF-8”); 我从http://www.bouncycastle.org/csharp/下载了示例,但似乎没有输入字符串值来加密的示例,然后它通过加密/解密过程。 我已经给出了模数 , 公共指数 , 私有指数 , 素数P , 素数q , 素数指数p , […]

使用充气城堡在Java中加密xml文件的示例

任何人都可以向我展示(或提供一个链接)如何使用充气城堡加密Java文件的示例? 我查看过bouncycastle.org但找不到任何API的文档。 即使只是知道使用哪些课程对我来说也是一个很大的帮助!

如何使用密码加密的Privatekey生成RSA keyPair?

我想生成一个用密码加密的私钥PKCS8格式,我尝试使用这段代码: String password = “123456”; KeyPairGenerator gen = KeyPairGenerator.getInstance(“RSA”); gen.initialize(2048); KeyPair key = gen.generateKeyPair(); PrivateKey privateKey = key.getPrivate(); PublicKey publicKey = key.getPublic(); FileOutputStream pvt = new FileOutputStream(“d:\\pvt123456.der”); try { pvt.write(privateKey.getEncoded()); pvt.flush(); } finally { pvt.close(); } FileOutputStream pub = new FileOutputStream(“d:\\pub123456.der”); try { pub.write(publicKey.getEncoded()); pub.flush(); } finally { pub.close(); } 但我不知道如何使用3des加密密码以与openssl格式兼容。

如何使用Bouncy Castle编辑Java中的密码套件列表

以下代码列出了Java SE 8支持的密码套件: import java.io.IOException; import java.net.UnknownHostException; import java.util.Arrays; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSocketFactory; public class ListCiphers { public static void main(String[] args) throws UnknownHostException, IOException { SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); String[] cipherSuites = factory.getSupportedCipherSuites(); System.out.println(Arrays.toString(cipherSuites)); } //end main } 我想创建配置了一些特定密码套件列表的SSL客户端。 我想使用的密码套件是标准化的,但Jva SE 8不支持。例如,这个密码在firefox中列出: ECDHE_ECDSA_WITH_AES_256_SHA 请帮助我以任何方式允许我编辑SSL客户端中的密码套件列表。 Bouncy Castle有助于此吗? 怎么样? 请一步一步地告诉我。 另外,如果您想通过使用python之类的其他语言来实现我想要的,请帮助我。