Tag: bouncycastle

加密BouncyCastle RSA密钥对并存储在SQL2008数据库中

我有一个生成BouncyCastle RSA密钥对的函数。 我需要加密私钥,然后将加密的私钥和公钥存储到单独的SQL2008数据库字段中。 我使用以下内容获取密钥对: private static AsymmetricCipherKeyPair createASymRandomCipher() { RsaKeyPairGenerator r = new RsaKeyPairGenerator(); r.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); AsymmetricCipherKeyPair keys = r.GenerateKeyPair(); return keys; } 这是正确的返回键,但我不知道如何加密私钥然后将其存储在数据库中。 这是我目前使用的加密数据(错误?): public static byte[] encBytes2(AsymmetricKeyParameter keyParam, byte[] Key, byte[] IV) { MemoryStream ms = new MemoryStream(); Rijndael rjdAlg = Rijndael.Create(); rjdAlg.Key = Key; rjdAlg.IV = IV; CryptoStream cs = […]

如何在不使用过时的BouncyCastle 1.7.0代码的情况下生成自签名证书?

我有以下代码生成一个很好的自签名证书,效果很好,但我想更新到最新的BouncyCastle(1.8.1.0),我收到有关过时使用的警告: var persistedCertificateFilename = “ClientCertificate.pfx”; if (!string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings[“PersistedCertificateFilename”])) { persistedCertificateFilename = ConfigurationManager.AppSettings[“PersistedCertificateFilename”].Trim(); } if (persistCertificateToDisk) { if (File.Exists(persistedCertificateFilename)) { var certBytes = File.ReadAllBytes(persistedCertificateFilename); this.clientCertificate = new X509Certificate2(certBytes, (string) null, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet); } } if (this.clientCertificate == null) { // Initialize the new secure keys KeyGenerator keyGenerator = KeyGenerator.Create(); KeyPair keyPair = keyGenerator.GenerateKeyPair(); this.privateKey […]

将RSA公钥转换为具有Bouncy Castle的RFC 4716公钥

我希望将RSA公钥转换为可以用作SSH公钥的东西。 目前我有Bouncy Castle为我提供了一个如下所示的公钥: —–BEGIN PUBLIC KEY—– MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq1Y5300i8bN+cI2U3wJE Kh3xG/………jbuz+WB0vvG P25UwCle2k5siVMwbImEYsr+Xt0dsMmGVB3/6MHAqrM3QQdQ8p2E5TyzL+JYa1FT gwIDAQAB —–END PUBLIC KEY—– 我希望它具有与此类似的RFC 4716格式: ssh-rsa AAAAB3NzaC1yc2…….G1p2Ag3mZLFsks7RNHVLgMsGIAikQ== 到目前为止,使用Bouncy Castle的我的代码如下所示: var r = new Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator(); r.Init(new KeyGenerationParameters(new SecureRandom(), 2048)); var keys = r.GenerateKeyPair(); var stringWriter = new StringWriter(); var pemWriter = new PemWriter(stringWriter); pemWriter.WriteObject(keys.Private); pemWriter.Writer.Flush(); stringWriter.Close(); PrivateKey = stringWriter.ToString(); stringWriter = new StringWriter(); pemWriter = new […]

在.NET上使用RSA私钥签名字符串?

byte[] plaintext = System.Text.Encoding.UTF8.GetBytes(“AAAAAAAAAAAAA”); TextReader trCer = new StreamReader(@”AA.key”); //key in PEM format PemReader rdCer = new PemReader(trCer); AsymmetricCipherKeyPair o = rdCer.ReadObject() as AsymmetricCipherKeyPair; ISigner sig = SignerUtilities.GetSigner(“MD5WithRSAEncryption”); sig.Init(true, o.Private); sig.BlockUpdate(plaintext,0,plaintext.Length); Byte[] signature = sig.GenerateSignature(); string signatureHeader = Convert.ToBase64String(signature); Console.WriteLine(signatureHeader); 如何使用DER格式的密钥? 我正在使用库BouncyCastle.Crypto.dll `

无法将带有私钥的生成证书导出到.net 4.0 / 4.5中的字节数组

我需要使用私钥导出和导入生成的证书到字节数组和从字节数组导入,除非我使用.NET framework 4.0和4.5,否则我没有任何问题。 我正在使用BouncyCastle库生成自签名证书,然后将它们转换为.net格式(X509Certificate2对象)。 不幸的是,升级到最新的框架我无法导出私钥。 这是代码: using System; using System.Diagnostics; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Crypto.Prng; using Org.BouncyCastle.Math; using Org.BouncyCastle.Security; using Org.BouncyCastle.X509; namespace X509CertificateExport { class Program { static void Main(string[] args) { var certificate = Generate(); var exported = certificate.Export(X509ContentType.Pfx); var imported = new X509Certificate2(exported, (string)null, […]