NET中OFB模式下的DES加密

问题描述

这是我目前在.NET中对数据加密标准算法的实现,包括加密和解密:

static string Encrypt(string text,string key)
        {
            byte[] textBytes = ASCIIEncoding.ASCII.GetBytes(text);
            byte[] keyBytes = ASCIIEncoding.ASCII.GetBytes(key);

            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

            provider.Mode = CipherMode.OFB;

            ICryptoTransform transform = provider.CreateEncryptor(keyBytes,keyBytes);
            CryptoStreamMode mode = CryptoStreamMode.Write;

            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream,transform,mode);
            cryptoStream.Write(textBytes,textBytes.Length);
            cryptoStream.FlushFinalBlock();

            byte[] encryptedTextBytes = new byte[memoryStream.Length];
            memoryStream.Position = 0;
            memoryStream.Read(encryptedTextBytes,encryptedTextBytes.Length);

            string encryptedText = Convert.ToBase64String(encryptedTextBytes);

            return encryptedText;
        }

static string Decrypt(string text,string key)
        {
            byte[] textBytes = Convert.FromBase64String(text);
            byte[] keyBytes = ASCIIEncoding.ASCII.GetBytes(key);

            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

            provider.Mode = CipherMode.OFB;

            ICryptoTransform transform = provider.CreateDecryptor(keyBytes,textBytes.Length);
            cryptoStream.FlushFinalBlock();

            byte[] decryptedMessageBytes = new byte[memoryStream.Length];
            memoryStream.Position = 0;
            memoryStream.Read(decryptedMessageBytes,decryptedMessageBytes.Length);

            string decryptedText = ASCIIEncoding.ASCII.GetString(decryptedMessageBytes);

            return decryptedText;
        }

但是它返回异常:OFB is not supported by this implementation。 有什么想法如何解决它,或在哪里可以找到有效的OFB实施方案?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)