草庐IT

bouncyCastle

全部标签

java - 使用 AES/CTR 模拟流密码

我正在编写一个应用程序服务器,我决定使用AES128/CTR/NoPadding来保护连接,因为它被认为足够安全而不必将字节扩展到block边界,我认为它非常适合到逻辑上是无缝流的TCP。问题是Cipher.update()在它有一个完整的16字节block之前不会返回加密block,因为CTR基本上是基于block密码虽然模拟流密码。我应该从tcp套接字读取数据并在消息到达时立即处理消息,但我无法检索最新的block,因为它仍在构建并且其大小小于16字节。我等不及了,因为我们不知道下一条消息何时发送。当然,我可以调用Cipher.doFinal()来获取剩余部分,但这意味着流(连接)

java - 连接到 SoftHSM java

代码:Stringpkcs11cfg="pkcs11.cfg";Providerp=newSunPKCS11(pkcs11cfg);Security.addProvider(p);KeyStoreks=KeyStore.getInstance("PKCS11",p);ks.load(null,pin);System.out.println(ks.size());//prints0配置:name=pkcs11Testlibrary=/usr/local/lib/libsofthsm.soslot=1问题是我有一些key对,我用pkcs11-tool添加了它们。softhsm的版本是1.2

java - 证书主题和颁发者中的属性颠倒

我正在尝试使用bouncycaSTLe1.46生成X509证书,代码如下。我遇到的问题是,当用JKS编写证书然后重新读取时,DN会反转。例如,如果我运行下面的代码,我会得到以下输出:CN=test,O=ginaCN=test,O=ginaCN=test,O=ginaO=gina,CN=test有人知道这是什么原因吗?如何避免呢?提前致谢。代码:publicstaticvoidmain(String[]args){try{Security.addProvider(newBouncyCastleProvider());KeyPairpair=generateKeyPair("RSA",10

java - BouncycaSTLe PGP解密验证

我正在尝试使用javaBouncyCaSTLe库解密和验证PGP消息,但遇到了问题,提示PartialInputStream过早结束。我知道加密工作正常,因为我可以在命令行上使用gpg解密和验证使用加密功能创建的消息。代码如下:publicstaticvoidsignEncryptMessage(InputStreamin,OutputStreamout,PGPPublicKeypublicKey,PGPPrivateKeysecretKey,SecureRandomrand)throwsException{out=newArmoredOutputStream(out);PGPEncr

java - 使用 Bouncy CaSTLe 提供程序进行 AES 加密/解密

这个问题在这里已经有了答案:JavaBouncyCastleCryptography-EncryptwithAES(2个答案)关闭9年前。这是我使用JDK5的native库开发的AES256加密和解密的实现:publicstaticStringencrypt(Stringkey,StringtoEncrypt)throwsException{KeyskeySpec=generateKeySpec(key);Ciphercipher=Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE,skeySpec);byte[]encr

java - 在 BouncyCaSTLe 上实现带数字签名算法 (ECDSA) 的椭圆曲线

我正在尝试实现ECDSA(椭圆曲线数字签名算法),但我找不到任何使用BouncyCaSTLe的Java示例。我创建了key,但我真的不知道我应该使用什么样的函数来创建签名并验证它。publicstaticKeyPairGenerateKeys()throwsNoSuchAlgorithmException,NoSuchProviderException,InvalidAlgorithmParameterException{ECParameterSpececSpec=ECNamedCurveTable.getParameterSpec("B-571");KeyPairGeneratorg

java - 为什么 SSL 握手有时会杀死我的 CPU?

我们遇到了一个非常奇怪的问题:我们正在使用Selenium的修改版本HTTP代理(更类似于BrowserMobProxy)并发现在某些我们无法可靠地重现的情况下,CPU在处理SSL连接时会逐渐停止。堆栈转储显示线程要么卡在此处:"ProxyHandler$SslRelay3-1"prio=10tid=0x09f9a400nid=0x81frunnable[0xb2e69000]java.lang.Thread.State:RUNNABLEatjava.math.BigInteger.multiply(BigInteger.java:1144)atjava.math.BigInteger

c# - C# SignedCms 的 Java 实现

我正在研究用Java实现C#SignedCms功能。我正在使用bouncycaSTLe库。问题是我得到的java签名与使用SignedCms生成的签名不同。C#代码X509Certificate2certificate=newX509Certificate2("myCertPath","myPass");Stringtext="text";ContentInfocontentInfo=newContentInfo(System.Text.Encoding.UTF8.GetBytes(text));SignedCmscms=newSignedCms(contentInfo,false);

java - 使用 Java 读取 X.509 证书

我正在尝试使用Java读取从外部方收到的证书。代码抛出以下错误:java.lang.RuntimeException:java.security.cert.CertificateException:Unabletoinitialize,java.io.IOException:extradatagiventoDerValueconstructor代码:FileInputStreamksfis=newFileInputStream(this.getCertificateFile());ksbufin=newBufferedInputStream(ksfis);certificate=(X5

使用 Bouncy CaSTLe 的 C# RSA 解密

我得到了一个Base64编码的加密字符串,它是使用BouncyCaSTLe在Java中加密的。下面的示例Java片段:Ciphercipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");cipher.init(Cipher.ENCRYPT_MODE,key.getPublic());byte[]encryptedText=cipher.doFinal("xxxxx|xxxxx".getBytes("UTF-8"));StringencodedText=newBASE64Encoder().encode(encryptedText);我需要使用