可能重复:
How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?
Convert hex string to byte array
我在PHP中加密字符串,我想用C#解密这个字符串。加密函数的最后一行将返回加密字符串的十六进制表示形式。不幸的是,对我来说,我无法弄清楚如何通过C#来扭转这种转换。我将在下面发布我的来源:
echo encrypt('hello'); // Returns '60eb44e27e73ba1d'
function encrypt($string) {
//Key
$key = "12345678";
//Encryption
$cipher_alg = MCRYPT_TRIPLEDES;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return bin2hex($encrypted_string);
}
我遇到的唯一问题是C#中的hex2bin转换 - 我工作的其余解密函数。请随时询问任何进一步的细节。
希望有一些我不知道的简单解决方案。我感谢任何回应。
此致
埃文
答案 0 :(得分:2)
使用
string hexstr = "60eb44e27e73ba1d";
byte[] R = (from i in Enumerable.Range(0, hexstr.Length / 2) select Convert.ToByte(hexstr.Substring(i * 2, 2), 16)).ToArray();
MSDN参考:
答案 1 :(得分:0)
我在网上找到了一个简单的解决方案......不知道这是怎么来的:
public static byte[] StringToByteArray(String hex)
{
int NumberChars = hex.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
return bytes;
}
这与PHP的bin2hex函数相反。