2011-10-10 35 views
-1

这不是针对任何类型的黑客攻击,我只是试图在.NET中使用Triple DES加密技术。我有一些测试数据。我必须得到给定数据的结果。我也有结果。但价值永远不会匹配。我相信代码是好的(将在下面给出)。所以我认为唯一的可能是关键是错的,所以让我们找到关键,看看是否匹配。以下是我的代码:如果我有IV,加密数据和结果值,我可以在Triple 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 如果我能找到密钥,我可能知道还需要在密钥中需要某种类型的处理。

感谢您的帮助!

+0

您希望我们帮助您获得可能属于您或可能不属于您的加密密钥? – Amy

+0

@Inuyasha我已经明确提到我有一些测试数据,“钥匙”是它的一部分。我无法得到正确的最终值,这使我认为这是一个选项。 –

回答

1

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

+0

谢谢!我认为在收到加密的字节数组之后必须进行一些处理。我会和给我测试数据的供应商一起检查一下。 –

+0

并尝试在我的空闲时间更好地理解算法。 :) –