шифрование строки с использованием bouncycastle c # - PullRequest
0 голосов
/ 12 октября 2018

В данный момент учимся читать в сертификате из магазина windows.затем используя закрытый и открытый ключи для шифрования строки, затем расшифруйте ее.

В моем магазине есть сертификат, которому назначен открытый и закрытый ключи.

Я читаю вштраф за использование открытого ключа

        X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);

        foreach (X509Certificate2 certificate in store.Certificates)
        {
            //TODO's
            byte[] encodedPublicKey = certificate.PublicKey.EncodedKeyValue.RawData;
            File.WriteAllLines(filePath, new[] {
            "-----BEGIN PUBLIC KEY-----",
            Convert.ToBase64String(encodedPublicKey, Base64FormattingOptions.InsertLineBreaks),
                "-----END PUBLIC KEY-----"
            });

            publicKey = System.IO.File.ReadAllText(filePath);

            encryptedWithPublic = encryption.EncryptWithPublic(input, publicKey);
        }
        store.Close();

Затем я вызываю этот метод для шифрования

var bytesToEncrypt = Encoding.UTF8.GetBytes(clearText);

        var encryptEngine = new Pkcs1Encoding(new RsaEngine());

        using (var txtreader = new StringReader(publicKey))
        {
            var keyParameter = (AsymmetricKeyParameter)new PemReader(txtreader).ReadObject();

            encryptEngine.Init(true, keyParameter);
        }

        var encrypted = Convert.ToBase64String(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));
        return encrypted;

Примечание. При создании собственного открытого ключа вышеуказанный метод работает, но при использовании открытогоключ от хранилища ключей падает с

Дополнительная информация: Неизвестный объект в GetInstance: Org.BouncyCastle.Asn1.DerInteger

ясно, что я делаю что-то не так, когда я читаю измагазин, но мне не удалось найти какую-либо помощь здесь с этой проблемой

...