C# 查找加密以进行解密
我有一个遗留的C#代码,它在代码中有一个加密的密码,对它进行解密并使用它。我现在必须更改实际的源代码值,即C# 查找加密以进行解密,c#,encryption,C#,Encryption,我有一个遗留的C#代码,它在代码中有一个加密的密码,对它进行解密并使用它。我现在必须更改实际的源代码值,即base64字符串需要更改 解密代码: var des = new TripleDESCryptoServiceProvider(); var md5Hash = new MD5CryptoServiceProvider(); des.Key = md5Hash.ComputeHash(Encoding.Unicode.GetBytes(..
base64
字符串需要更改
解密代码:
var des = new TripleDESCryptoServiceProvider();
var md5Hash = new MD5CryptoServiceProvider();
des.Key = md5Hash.ComputeHash(Encoding.Unicode.GetBytes(...key...));
des.Mode = CipherMode.ECB;
var desDecrypt = des.CreateDecryptor();
var buffer = Convert.FromBase64String(...value...);
var result = Encoding.Unicode.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length));
return result;
我正在尝试对更改的值进行特殊的重新加密,如下所示:
var des = new TripleDESCryptoServiceProvider();
var md5Hash = new MD5CryptoServiceProvider();
des.Key = md5Hash.ComputeHash(Encoding.Unicode.GetBytes(...key...));
des.Mode = CipherMode.ECB;
var desEncrypt = des.CreateEncryptor();
var s = "...new value...";
var b = Encoding.Unicode.GetBytes(s);
desEncrypt.TransformFinalBlock(b, 0, b.Length);
var x = Convert.ToBase64String(b);
这给了我一个很好的base64
值来替换我的旧常量。然而,当代码试图解密这个新值时,我得到一个
System.Security.Cryptography.CryptographyException:密码的长度
要解密的数据无效
源值的长度相同。base64值的长度相同。我知道这不是经营铁路的方式。我只是希望我错过了一些明显的、简单的和/或愚蠢的东西。看起来你实际上没有使用3DES加密的输出:
var b = Encoding.Unicode.GetBytes(s);
// This returns the encrypted data, but you're not storing it anywhere
desEncrypt.TransformFinalBlock(b, 0, b.Length);
// b is still the original input, not the encrypted data
var x = Convert.ToBase64String(b);
试试这个:
var b = Encoding.Unicode.GetBytes(s);
// Store encrypted data in "e"
var e = desEncrypt.TransformFinalBlock(b, 0, b.Length);
// Convert the encrypted data to base64
var x = Convert.ToBase64String(e);
它是公共私钥策略吗?如果是这样的话,加密和解密就有不同的密钥。坦率地说,我已经很久没有处理过加密了,我从一个洞里就不知道它了。然而,从文件上看,它似乎是对称的,所以我怀疑它是对称的。还要注意的是,在任何地方都没有设置/使用初始化向量。在切线上:它看起来像CipherMode.ECB。您能打印出
缓冲区的大小吗?在这种情况下,它的长度应该是24字节。也许,我认为这超出了给定的代码范围。不知怎的,你丢失了几个字节。铱星已经给出了答案,你用的是纯文本。非常感谢你。现在我想我们可以用“太本地化”来结束这个问题。