繁体   English   中英

C#中的TripleDES,与工具的值不同

[英]TripleDES in C#, not the same value with tool

在具有在线工具的页面中,使用三重DES加密文本:

Key: 09F15B103BC56A6FA705E71F0850EE6D
IV: 0000000000000000
Text: 9876543210123456FFFFFFFFFFFFFFFF
Encrypted value: 3AA4CCDEE3F753A3CE62B72252386873

在C#中,我有一个代码,但是我无法获得相同的值。

public static string Encrypt(string toEncrypt, string _key) {
 TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
 byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0 };
 var CharHex = GetHexFromAscii(toEncrypt);
 var input = ParseHex(CharHex);
 tdes.IV = iv;
 tdes.Mode = CipherMode.CBC;
 tdes.Padding = PaddingMode.None;
 ICryptoTransform cTransform = tdes.CreateEncryptor();
 byte[] resultArray = cTransform.TransformFinalBlock(input, 0,
          input.Length);
 tdes.Clear();
 var resTemp = Convert.ToBase64String(resultArray, 0, resultArray.Length);}}

有人知道为什么吗?

该工具的页面为http://extranet.cryptomathic.com/descalc/index

在类System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary的帮助下:

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0 };
var input = SoapHexBinary.Parse("9876543210123456FFFFFFFFFFFFFFFF").Value;
tdes.IV = iv;
tdes.Key = SoapHexBinary.Parse("09F15B103BC56A6FA705E71F0850EE6D").Value;
tdes.Mode = CipherMode.CBC;
tdes.Padding = PaddingMode.None;
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(input, 0, input.Length);
tdes.Clear();
var resTemp = BitConverter.ToString(resultArray, 0, resultArray.Length);

它返回相同的输出。 3A-A4-CC-DE-E3-F7-53-A3-CE-62-B7-22-52-38-68-73

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM