Tag: bouncycastle

Bouncy Castle scrypt实施

我目前正在使用scrypt实现密码哈希。 我已经在GitHub上找到了一个很好的scrypt实现。 令我惊讶的是,我还在Bouncy Castle图书馆中发现了一个scrypt实现 。 这个类没有记录,维基百科没有提到Bouncy Castle作为scrypt实现提供者,我真的很难找到使用Bouncy Castles scrypt的人的任何代码示例,所以这看起来有些可疑。 另一方面,如果我不得不在GitHubs加密实现和Bouncy Castle之间做出选择,我宁愿选择Bouncy Castle。 那么Bouncy Castles是否会破坏 “真实的东西”? 我可以使用Bouncy Castles scrypt而不是JCA提供者API(或者我是否需要像这里一样直接调用它: 带有充气城堡的scala中的AES-256加密工作流程:盐和IV的使用和传输/存储 )? 编辑:我现在可以得到的最佳答案: https : //www.bouncycastle.org/devmailarchive/msg13653.html

来自bouncycastle RSAKeyParameters的Publickey

我有以下代码从字符串中读取CSR并以PEM格式输出公钥。 我还需要将公钥作为java RSAPublickey获取,但我无法弄清楚如何执行此操作。 import org.bouncycastle.crypto.params.RSAKeyParameters; import org.bouncycastle.crypto.util.PublicKeyFactory; import org.bouncycastle.pkcs.PKCS10CertificationRequest; import org.bouncycastle.util.io.pem.PemObject; import org.bouncycastle.util.io.pem.PemReader; import org.bouncycastle.util.io.pem.PemWriter; import java.io.*; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.RSAPublicKeySpec; public class parseCSRfromString { String csrPEM = “—–BEGIN CERTIFICATE REQUEST—–\n” + “MIICwjCCAaoCAQAwfTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExEzAR\n” + “BgNVBAcTCkJvY2EgUmF0b24xGzAZBgNVBAoTEkxvb25leSBUb29ucywgSW5jLjEU\n” + “MBIGA1UECxMLRGV2ZWxvcG1lbnQxFDASBgNVBAMTC2V4YW1wbGUuY29tMIIBIjAN\n” + “BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiJCj31d1Rp+aKz/GTkedaiS/VSCc\n” + “PRARYgXukobjgBHx46HjldAcfg/DoANn5lEQaFxaIZJLbZ/AdLUyw/hUbU0CjWXv\n” + “pN3Ep3o9XgRTPkIFoI22VOI/O2ZLjBq/E4DWyVmv+vG6BK0LRh7hykzPCw6KIRR9\n” + “NCmUMJMQX5d5P/r1lR5H399pnLcLsrHoWDwBSEDgkGWyxnvEB0+/bIz42T3qnlFt\n” + “7avarxlHG2p5DoRTf8GJ+6imY88ZeBW/Nk18aDINsAHWLv383JICIAsZ3VuMk8m/\n” + “Z/Z5b21zIuZECDJjZjvAAjr/shVLB+Pck5+HJy6tqj79MJOQu+jKIrK8VwIDAQAB\n” […]

签署消息并通过Bouncy Castle的恢复消息进行validation

我编写了以下用于签名消息的代码,然后在Bouncy Castle的java中validation它。 正确签署工作但validation不起作用。 代码打印的结果: 签名被篡改 无法恢复 并返回null。 为什么eng.hasFullMessage()函数返回false以及为什么以下代码不起作用? 谢谢大家。 public static String sigVer(PublicKey pu, PrivateKey pr, String original) throws Exception{ //sign BigInteger big = ((RSAKey) pu).getModulus(); byte[] text = original.getBytes(); RSAKeyParameters rsaPriv = new RSAKeyParameters(true, big,((RSAPrivateKey) pr).getPrivateExponent()); RSAKeyParameters rsaPublic = new RSAKeyParameters(false, big,((RSAPublicKey) pu).getPublicExponent()); RSAEngine rsa = new RSAEngine(); byte[] data; Digest dig = new […]

如何使用BouncyCastle lightwigth API生成cms封装数据

经过艰难的无数个小时后,我终于得到了当前的工作代码,使用JCE / JCA生成带有收件人信息的CMS封装(RSA-OAEP / PKCS#1)数据: String digest = “SHA-256”; String mgfDigest = “SHA-256”; // Data to encrypt CMSTypedData msg = new CMSProcessableByteArray(data); // Generator for my CMS enveloped data CMSEnvelopedDataGenerator envelopedDataGen = new CMSEnvelopedDataGenerator(); // Recipient Info Stuff JcaAlgorithmParametersConverter paramsConverter = new JcaAlgorithmParametersConverter(); OAEPParameterSpec oaepSpec = new OAEPParameterSpec(digest, “MGF1”, new MGF1ParameterSpec(mgfDigest), PSource.PSpecified.DEFAULT); AlgorithmIdentifier oaepAlgId = […]

为什么在用充气城堡解密后附加这些方形符号?

我创建了一个简单的java方法,使用充气城堡库加密和解密文本。 加密按预期工作,但是当我解密某些内容时,我会在最后得到这些额外的方形符号: 我认为这可能与填充有关,但我已经按照bouncy castle网站上的例子进行了操作,所以我真的不明白为什么我会得到这种输出。 这是我正在使用的代码: [主要] public static void main(String[] argv) { String ciphertext = “PlJR5pzbowsuzHIc9iTKHg==”; String decrypted; CryptoCodec codec = new CryptoCodec(); decrypted = codec.exec(“AES”, “xxxxooooxxxxoooo”, ciphertext, false); System.out.println(“Ciphertext: ” + ciphertext); System.out.println(“Decrypted: ” + decrypted); } [CryptoCodec] // Eod: (true) Encrypt or (false) decrypt. public String exec(String algorithm, String key, String data, boolean […]

无法validation签名(cmssigneddata)bouncycastle

当我想validation我用BouncyCastle制作的签名时,我没有进入verifySignature方法的第二个while循环。 store.getMatches()返回一个空数组。 public static CMSSignedData sign() throws Exception { byte[] file = fileChooser(); store = KeyStore.getInstance(storeType); FileInputStream in = new FileInputStream(new File(storePathKey)); store.load(in, storePassword); in.close(); Key priv = store.getKey(“Subject”, storePassword); System.out.println(priv.toString() + “priv string”); X509Certificate cert = (X509Certificate) store.geCertificate(“Subject”); ContentSigner signer = new JcaContentSignerBuilder(sigAlgo).build((RSAPrivateKey) priv); CMSTypedData data = new CMSProcessableByteArray(file); CMSSignedDataGenerator gen = new CMSSignedDataGenerator(); […]

Bouncy castle提供未知的HashAlgorithm

我正在尝试使用充气城堡进行DTLS Handshake 。 我通过以下链接生成密钥。 我正在通过扩展DefaultTlsClient来工作。 它可以生成client_hello数据包。 但是当server_hello数据包到达时,它会给出org.bouncycastle.crypto.tls.TlsFatalAlert: internal_error(80)引起: java.lang.IllegalArgumentException: unknown HashAlgorithm 。 任何人都可以提供任何暗示吗? 更新: 来自Wireshark:在证书请求中,有9个签名哈希算法。 其中一个是rsa_pss_sha256(0x0804) 。 在public static Digest createHash(short hashAlgorithm)的public static Digest createHash(short hashAlgorithm)函数中没有匹配它。 这就是它给出Unknown hash算法的原因。 那是什么意思? 使用Bouncy Castle,是否可以使用该服务器建立DTLS? 以下是加载密钥库的代码: public static void initKeyStore() { char password[] = “bbtone”.toCharArray(); if( !isKeystoreLoaded) { try { FileInputStream fis = new FileInputStream(“bbtone”); KeyMgmt key = new […]

使用bouncycastle解密aes-256-cbc

bouncyCastle新手,任何帮助表示赞赏。 我正在尝试使用bounncycastle java API解密由我的系统上的第三方加密的文件。 它似乎解密文件很好,除了下面解密文件开头的垃圾数据blob PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher( new AESEngine())); CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(DatatypeConverter.parseHexBinary(keyInfo.getKey())), DatatypeConverter.parseHexBinary(keyInfo.getInitializationVector())); aes.init(false, ivAndKey); byte[] decryptedBytes = cipherData(aes, Base64.decodeBase64(inputStreamToByteArray(new FileInputStream(encryptedFile)))); return new ByteArrayInputStream(decryptedBytes); private static byte[] cipherData(PaddedBufferedBlockCipher cipher, byte[] data) throws Exception { int minSize = cipher.getOutputSize(data.length); byte[] outBuf = new byte[minSize]; int length1 = cipher.processBytes(data, 0, […]

Bouncy Castle不在linux机器上工作

我为fips投诉签名生成和validation实现了boucnyCastle,这在Windows环境中运行良好,但在Linux环境中,代码卡在密钥对生成上。 以下是我写的代码: public static KeyPair generateKeyPair() throws GeneralSecurityException { KeyPairGenerator keyPair = KeyPairGenerator.getInstance(“RSA”, “BCFIPS”); keyPair.initialize(new RSAKeyGenParameterSpec(3072, RSAKeyGenParameterSpec.F4)); return keyPair.generateKeyPair(); } 充气城堡

如何将.der文件中的私钥加载到java私钥对象中

我正在编写一个java程序来从文件系统中的文件导入私钥,并使用java创建一个私钥对象…我可以用.pem格式的文件来做,但是,使用.der格式,我不知道做什么,因为我无法首先检测用于生成密钥的算法。 在.pem文件中,我可以从PKCS#1的标题中确定算法,该标题有一个标题 —–BEGIN RSA PRIVATE KEY—- 格式和使用bouncycastle pem阅读器的PKCS#8有标题 —–BEGIN PRIVATE KEY—–但与.der格式的人不明白:( 如果有人对.key格式的想法告诉我 感谢名单