C#'s opposite to PHP's bin2hex()
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?
Convert hex string to byte array
我正在用PHP加密一个字符串,我想用C解密这个字符串。加密函数的最后一行将返回加密字符串的十六进制表示形式。但不幸的是,我不知道如何通过C来逆转这种转换。我将在下面发布我的来源:
PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 | 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转换——我工作的解密函数的其余部分。请随时询问更多细节。
希望有一些简单的解决方案我不知道。我很感激你的回答。
当做,
埃文
使用
1 2 3 | 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参考:
- http://msdn.microsoft.com/en-us/library/aka44sz.aspx
- http://msdn.microsoft.com/en-us/library/c7xhf79k.aspx
- http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx
- http://msdn.microsoft.com/en-us/library/bb397926.aspx
我在网上找到了一个简单的解决方案…不知道这是怎么发生的:
1 2 3 4 5 6 7 8 | 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函数相反。