首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES (rijndael)解密

AES (rijndael)解密
EN

Stack Overflow用户
提问于 2015-01-14 12:48:00
回答 1查看 2.6K关注 0票数 1

我有一个Security类,它可以编码和解码字符串,但是当我尝试解码时--有些事情出错了。

这是我的安全课:

代码语言:javascript
复制
class Security
{
    public static String encrypt(String imput, String key)
    {
        String cipherText;
        var rijndael = new RijndaelManaged()
        {
            Key = Encoding.Unicode.GetBytes(key),
            Mode = CipherMode.ECB,
            BlockSize = 128,
            Padding = PaddingMode.Zeros,
        };
        ICryptoTransform encryptor = rijndael.CreateEncryptor(rijndael.Key, null);
        using (var memoryStream = new MemoryStream())
        {
            using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
            {
                using (var streamWriter = new StreamWriter(cryptoStream))
                {
                    streamWriter.Write(imput);
                    streamWriter.Flush();
                }
                cipherText = Convert.ToBase64String(memoryStream.ToArray());
            }
        }
        return cipherText;
    }

    public static String decrypt(String imput, String key)
    {
        byte[] data = Convert.FromBase64String(imput);
        String decrypted;

        using (RijndaelManaged rijAlg = new RijndaelManaged())
        {
            rijAlg.Key = Encoding.UTF8.GetBytes(key);
            rijAlg.Mode = CipherMode.ECB;
            rijAlg.BlockSize = 128;
            rijAlg.Padding = PaddingMode.Zeros;

            ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, null);
            using (MemoryStream msDecrypt = new MemoryStream(data))
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                    {
                        decrypted = srDecrypt.ReadToEnd();                            
                    }
                }
            }
        }
        return decrypted;
    }
}

在program.cs中:

代码语言:javascript
复制
String A = Security.encrypt("text", "1234567891234567");
A = Security.decrypt(A, "1234567891234567");

最后,它返回类似的内容:�%����;\0�\a��f6,但我需要原始字符串。我在哪里犯了个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 12:55:24

在这两种方法中使用相同的编码,无论是Encoding.Unicode还是Encoding.UTF8

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27943335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档