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
相关产品推荐
相关产品推荐

