相关疑难解决方法(0)

使用.NET类的OpenSSL加密

我正在寻找创建一个使用与OpenSSL兼容的.NET库的类.我知道有一个OpenSSL.Net包装器,但我宁愿避免引用第三方\非托管代码.我不是在寻找关于这是否是正确选择的讨论,但有理由.

目前我有以下内容,我认为应该与OpenSSL兼容 - 它有效地做了我认为OpenSSL从OpenSSL文档中所做的事情.但是,即使只使用这个类来进行加密和解密,我也会收到以下错误:

[CryptographicException] Padding is invalid and cannot be removed.
Run Code Online (Sandbox Code Playgroud)

我已经逐步完成了代码并验证了salt\key\iv在加密和解密过程中都是一样的.

请参阅下面的示例类和调用加密解密.欢迎任何想法或指示.

public class Protection
    {
        public string OpenSSLEncrypt(string plainText, string passphrase)
        {
            // generate salt
            byte[] key, iv;
            byte[] salt = new byte[8];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            rng.GetNonZeroBytes(salt);
            DeriveKeyAndIV(passphrase, salt, out key, out iv);
            // encrypt bytes
            byte[] encryptedBytes = EncryptStringToBytesAes(plainText, key, iv);
            // add salt as first 8 bytes
            byte[] encryptedBytesWithSalt = new byte[salt.Length + encryptedBytes.Length];
            Buffer.BlockCopy(salt, 0, encryptedBytesWithSalt, 0, salt.Length);
            Buffer.BlockCopy(encryptedBytes, 0, encryptedBytesWithSalt, salt.Length, …
Run Code Online (Sandbox Code Playgroud)

.net c# encryption openssl aes

20
推荐指数
1
解决办法
3万
查看次数

标签 统计

.net ×1

aes ×1

c# ×1

encryption ×1

openssl ×1