.net 如果我有IV,加密数据和结果值,我能在三重DES加密算法中找到密钥吗?

.net 如果我有IV,加密数据和结果值,我能在三重DES加密算法中找到密钥吗?,.net,algorithm,tripledes,.net,Algorithm,Tripledes,这不是针对任何类型的黑客攻击,我只是在尝试.NET中的三重DES加密技术。我带了一些测试数据。我必须用给定的数据得到结果。我也有结果。但是这个值永远不匹配。我确信代码是好的(将在下面给出)。所以我认为唯一的可能是钥匙错了,所以让我们找到钥匙,看看是否匹配。下面是我的代码: byte[] key = StringToByteArray("5b70649d4ae0bf2af891c167514aa7515b70649d4ae0bf2a"); byte[] iv = new byte[] { 0, 0

这不是针对任何类型的黑客攻击,我只是在尝试.NET中的三重DES加密技术。我带了一些测试数据。我必须用给定的数据得到结果。我也有结果。但是这个值永远不匹配。我确信代码是好的(将在下面给出)。所以我认为唯一的可能是钥匙错了,所以让我们找到钥匙,看看是否匹配。下面是我的代码:

byte[] key = StringToByteArray("5b70649d4ae0bf2af891c167514aa7515b70649d4ae0bf2a");
byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
byte[] bytes = Encoding.ASCII.GetBytes("95e4d77c6d6c6c993333303533303833");
TripleDESCryptoServiceProvider tripleDes = new TripleDESCryptoServiceProvider();
tripleDes.Mode = CipherMode.CBC;
//tripleDes.Padding = PaddingMode.None;
tripleDes.Key = key;
tripleDes.IV = iv;
MemoryStream ms = new MemoryStream();
ICryptoTransform encryptor = tripleDes.CreateEncryptor();

CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);
cs.Write(bytes, 0, bytes.Length);
cs.FlushFinalBlock();
byte[] cipher = ms.ToArray();
string finalValue = ByteToString(cipher, 16); //ByteToString method will convert byte array to string.
最终结果是
1B529558534F43D15556AD65C7E396D5674EE8A09E0A29A84389020EF820AC51B7D5E1B33BDA18A2
。 因为我只需要16个字节,所以我只将前16个字节转换为十六进制
1B529558534F43D15556AD65C7E396D5

但预期结果是76db821f5c7af12dc8d70a6a79cfcb77 如果我能找到钥匙,我可能知道钥匙中也需要某种处理


谢谢你的帮助

虽然这当然是可能的,但我不认为TripleDESCryptoServiceProvider类设计为“反向”工作,在您拥有密码、IV和未加密的数据时为您提供密钥。为什么要这样做?

你想让我们帮助你获得一个加密密钥,这个密钥可能属于你,也可能不属于你?@Inuyasha我已经清楚地提到,我有一些测试数据,“密钥”是其中的一部分。我无法获得正确的最终值,这使我认为这是一个选项。谢谢!我认为在收到加密的字节数组后,必须进行一些处理。我将与提供测试数据的供应商核实。我将在空闲时间尝试更好地了解该算法。:)