You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中解密加密字符串仅返回首个字符的问题求助

C#中解密加密字符串仅返回首个字符的问题求助

各位大佬好,我在做登录页面的加密解密功能,加密过程看起来一切正常,所有内容都能按预期加密,但把加密后的密码传入解密算法时,却只返回第一个字符,这实在搞不懂哪里出问题了。

举个场景:比如我加密一串多字符的密码,解密后就只剩第一个字符能正常返回,后面的内容都丢失了。

下面是我的完整代码:

public string encrypt(string key, string data)
{
    byte[] clearBytes = Encoding.Unicode.GetBytes(data);
    byte[] iv = new byte[16];
    using (Aes encryptor = Aes.Create())
    {
        encryptor.Key = Encoding.UTF8.GetBytes(key);
        encryptor.IV = iv;
        encryptor.Padding = PaddingMode.PKCS7;
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cs.Write(clearBytes, 0, clearBytes.Length);
                cs.Close();
            }
            data = Convert.ToBase64String(ms.ToArray());
        }
    }
    return data;
}

public static string decryptData(string key, string data)
{
    byte[] iv = new byte[16];
    byte[] clearBytes = Convert.FromBase64String(data);
    using (Aes decrpytor = Aes.Create())
    {
        decrpytor.Key = Encoding.UTF8.GetBytes(key);
        decrpytor.IV = iv;
        ICryptoTransform decryptor = decrpytor.CreateDecryptor(decrpytor.Key, decrpytor.IV);
        decrpytor.Padding = PaddingMode.PKCS7;
        using (MemoryStream ms = new MemoryStream(clearBytes))
        {
            using (CryptoStream cs = new CryptoStream((Stream)ms, decryptor, CryptoStreamMode.Read))
            {
                using (StreamReader sr = new StreamReader((Stream)cs))
                {
                    return sr.ReadToEnd();
                }
            }
        }
    }
}

public void button1_Click(object sender, EventArgs e)
{
    var key = "b14ca5898a4e4133bbce2ea2315a1916";
    var str = passWord.Text;
    var encryptedPassword = encrypt(key, str);
    var decrpted = decryptData(key, encryptedPassword);
    passwordTest.Text = encryptedPassword;
    decryptedtest.Text = decrpted;
}

注:代码里最后两行纯粹是用来测试输出结果的,方便我查看加密和解密后的内容。

有没有大佬能帮我看看问题出在哪?万分感谢!

备注:内容来源于stack exchange,提问作者Charlie Gale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:03:13