Tag: bouncycastle

仅使用公钥创建AsymmetricCipherKeyPair

我有点问题。 我正在尝试编写客户端 – 服务器应用程序(更多是POC),客户端从服务器请求公钥,然后服务器生成此密钥AsymmetricCipherKeyPair ,具有以下内容 private static AsymmetricCipherKeyPair GenerateKeyPair() { RsaKeyPairGenerator g = new RsaKeyPairGenerator(); g.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); var pair = g.GenerateKeyPair(); return pair; } 这生成正确,可以正确加密和加密(在服务器端,但这失败了目的) 然后我将一个序列化的公钥发送给客户端 private static byte[] SerialisePublic(AsymmetricCipherKeyPair keypair) { SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keypair.Public); byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); return serializedPublicBytes; } private static void SendBytes(TcpClient client, byte[] send) { NetworkStream stream […]

Bouncy Castle C#PGP解密示例

昨天我一直在寻找,我似乎无法在c#中找到使用Bouncy Castle的PGP解密的工作示例

Bouncy Castle PGP解密问题

我有一个使用Bouncy Castle进行PGP解密的应用程序,在过去的8个月左右没有任何问题,过去2天突然出现了GetDataStream方法引发exception的问题: exception消息:“错误设置非对称密码”。 内部exception消息:“不是RSA密钥”。 private static PgpObjectFactory getClearDataStream(PgpPrivateKey privateKey, PgpPublicKeyEncryptedData publicKeyED) { // Exception throws here. Stream clearStream = publicKeyED.GetDataStream(privateKey); PgpObjectFactory clearFactory = new PgpObjectFactory(clearStream); return clearFactory; } 密钥尚未过期,没有到期日期: 我没有对应用程序进行任何更改,我没有触及按键,所以我不太明白为什么一个问题突然出现了。 有任何想法吗? 我还可以使用我在应用程序中加载的相同密钥使用Kleopatra手动解密文件。 更新1 – 我下载了OpenPGP Library for .NET的免费试用版,它也希望使用BouncyCastle,我也没有问题使用相同的密钥解密文件。 出于某种原因,我使用已经工作了几个月的BouncyCastle实现的解密由于某种原因而停止工作,我还无法识别。 更新2 – 我上周提取的文件有效,我还下载了BouncyCastle的源代码,以便我可以单步调试以查看exception抛出的位置以及变量在工作和一个不起作用的文件。 在PgpPublicKeyEncryptedData类的GetDataStream方法的开头抛出exception: byte[] plain = fetchSymmetricKeyData(privKey); 当我进入这个方法时,对于我可以解密而没有任何问题的文件,我注意到keyData.Algorithm变量设置为“ElGamalEncrypt”,而对于exception抛出的文件,文件keyData.Algortithm设置为“RsaGeneral”。 为什么这些不同? 公司发送文件是否改变了加密方法? BouncyCastle是否未正确支持此加密方法? private byte[] fetchSymmetricKeyData(PgpPrivateKey privKey) […]

使用Bouncy Castle AES / CBC / PKCS7加密字符串

我一直在寻找一些关于如何使用Bouncy Castle Framework加密标题中加密的简单字符串的示例代码。 此代码将在Windows Universal项目上运行。 我之前尝试使用内置API加密的尝试无法在服务器上解密。 我试过这个:这给了我一个字符串: 4pQUfomwVVsl68oQqWoWYNRmRM + CP + vNFXBNdkN6dZPQ34VZ35vsKn9Q7QGTDVOj + w5mqVYHnGuAOFOgdgl8kA == s = String.Format(“{0}_{1}”, s, DateTime.Now.ToString(“ddMMyyyyHmmss”)); SymmetricKeyAlgorithmProvider algorithm = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7); IBuffer keymaterial = CryptographicBuffer.ConvertStringToBinary(“[Key]”, BinaryStringEncoding.Utf8); CryptographicKey KEY = algorithm.CreateSymmetricKey(keymaterial); IBuffer IV = CryptographicBuffer.ConvertStringToBinary(“[IV]”, BinaryStringEncoding.Utf8); IBuffer data = CryptographicBuffer.ConvertStringToBinary(s, BinaryStringEncoding.Utf8); IBuffer output = CryptographicEngine.Encrypt(KEY, data, IV); return CryptographicBuffer.EncodeToBase64String(output); 服务器使用加密/解密 public static string […]

使用C#,BouncyCastle和导入的RSA密钥进行RSA签名和validation – 内部使用Python示例和非工作C#代码示例

我一直在试着用C#和BouncyCastle工作来解决RSA数据签名和validation的一个小例子。 RSACryptoServiceProvider.VerifyHash()总是在一个适用于Python和M2Crypto的示例中返回false。 我已经validation了工作示例和C#示例之间的哈希签名是相同的,它就在那里我被卡住了。 我觉得我错过了一些重要的细节。 工作的Python代码和非工作的C#代码如下。 关键是生成的 openssl genrsa -out testkey.pem 1024 openssl rsa -in testkey.pem -pubout > testkey.pub Python代码(工作): private = “””—–BEGIN RSA PRIVATE KEY—– MIICXQIBAAKBgQCxSHbp1ID/XHEdzVzgqYR1F/79PeMbqzuKNZChvt1gFObBhKyB pgaHDHw3UZrO8s/hBEE/Mpe2Lh90ZAFdPIXq+HyVoznXMoJYBv0uLDApvSQbJNOd f7T5VwmpBbkfj1NAlm39Eun9uBSokEOnB24g+bczPQPGOASrQ2Ly9afOZQIDAQAB AoGBAIEzQIZ1OnXgVwfTLMcGg+QaUtkYizUU+9Vj6D4YrZliYjHSkS4DY2p0rOpb 7Ki5yMpCoZJ/OpWo03+tilj6zNUU6X3aHrPPSv8jcsE0sDi9zYJr/Ztk3EG23sad bM28Bb4fV/Z0/E6FZJrmuvI2dZP/57oQSHGOhtkHFO21cW5BAkEA3l/i5Rc34YXc WHYEsOYe0kAxS4dCmhbLWaWvsghW/TomjdxzePsO70GZZqRMdzkfA1iS1OrK+pP4 4suL2rSLrQJBAMwXFnBp4Jmek0CTSxoYf6q91eFm/IRkGLnzE1fEZ76vQOBTas8T /mpjNQHSEywo/QB62h9A8hy7XNrfZJAMJJkCQA5TYwybKFBxDTbts3Op/4ZP+F0D Q7klisglsmHnw6Lgoic1coLyuY2UTkucfgiYN3VBuYPZ9GWcLsZ9km7ufqkCQQCz NVa70Qyqd+cfXfcla/u2pskHCtKTQf3AUmRavhjHBMa39CemvAy7yG9EMP4q2bcH U9jydqnidtdbTavVHQSJAkA0zJtLzHGPtQqQaI7K6kBDXYPqloGnQxHxad0HPx2e Vj2qv1tEsqeG6HC7aL/afXOtxcfjq4oMHbGUjDv+dGfP —–END RSA PRIVATE KEY—–“”” public = “””—–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxSHbp1ID/XHEdzVzgqYR1F/79 PeMbqzuKNZChvt1gFObBhKyBpgaHDHw3UZrO8s/hBEE/Mpe2Lh90ZAFdPIXq+HyV oznXMoJYBv0uLDApvSQbJNOdf7T5VwmpBbkfj1NAlm39Eun9uBSokEOnB24g+bcz PQPGOASrQ2Ly9afOZQIDAQAB —–END PUBLIC KEY—–“”” message […]

开始使用BouncyCastle加密dll c#

我是密码学的先驱 我想在c#中使用BouncyCastle .dll,但我找不到文档和示例。 特别是我需要使用pkcs#7(.p7m结果)对文件进行签名,并添加符合RFC 3161标准的可信服务器时间戳(.m7m结果)。 有人可以建议我在哪里可以找到实例和文档吗? 提前感谢 最好的祝福

如何使用BouncyCastle生成根证书,然后使用由该根证书签名的站点证书?

我正在尝试构建一个使用带有SSL WebAPI的自托管服务,我需要能够自行生成要使用的SSL证书。 我希望能够从C#做到这一切。 我一直在玩BouncyCastle 。 我需要生成2个证书,一个根和一个站点证书。 然后我需要在Windows中将它们安装在正确的位置。 我无法弄清楚如何使我的第二个证书参考我的根ca. 我试过的所有东西都让我得到了一个不受信任的证书错误。 任何帮助,将不胜感激。

Bouncy Castle,RSA:将密钥转换为String格式

我在我的C#项目中使用RSA(Bouncy Castle API)。 我用这个方法生成了密钥对: RsaKeyPairGenerator r = new RsaKeyPairGenerator(); r.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); AsymmetricCipherKeyPair keys = r.GenerateKeyPair(); AsymmetricKeyParameter private_key = keys.Private; AsymmetricKeyParameter public_key = keys.Public; 现在我想将它们保存在txt文件中,但问题是我无法将它们转换为字符串格式。 我在另一篇文章中读到必须使用以下序列化密钥: PrivateKeyInfo k = PrivateKeyInfoFactory.CreatePrivateKeyInfo(private_key); byte[] serializedKey = k.ToAsn1Object().GetDerEncoded(); 这是正确的方法吗? 如果是,那我该怎么办? 只需将它们从byte []转换为String?

.Net以编程方式与Bouncy Castle签署PKCS#10请求

我们使用CertEnroll在客户端上生成了有效的PKCS#10证书请求。 现在我们需要对其进行签名并将结果返回给客户端,其中CertEnroll将处理本地证书库的内容。 这是一个B2B应用程序,根签名证书将自行生成,或者我们可以使用我们现有的Thawte SSL证书。 Server(2008)没有运行Active Directory,除非绝对必要,否则我们不希望为此创建独立的签名基础结构/服务。 不需要撤销等 – 我们希望以编程方式执行此操作。 我很乐意使用BouncyCastle库但是C#lib缺少任何有意义的文档,而原始的Java文档无疑是相似的,而C#实现的不同之处让我更加困惑。 是否有人知道(或拥有)样本C#(或VB)代码或已知相关链接,使用BouncyCastle或本​​地.Net类? 完成这件事的任何帮助将不胜感激!

如何使用Bouncy Castle库在C#中使用PGP密钥签署txt文件

有没有人有一个如何在C#和Bouncy Castle库中使用PGP密钥签署txt文件的示例。 不加密文件,只添加签名。