Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#字节数组到字符串_C#_.net_Encryption_Openssl_Tripledes - Fatal编程技术网

C#字节数组到字符串

C#字节数组到字符串,c#,.net,encryption,openssl,tripledes,C#,.net,Encryption,Openssl,Tripledes,我读过一些关于这方面的文章,我认为这里没有考虑到一个变量 我正在浏览其他人的代码,他们已经实现了三重des加密。他们没有把钥匙和iv作为字符串存储在某处。仅作为字节数组 我需要在C#之外进行同样的加密/解密调用,所以我正在尝试找出使用的密钥 我尝试过的事情: byte[] key; // this is set byte[] iv; // this is set Convert.ToBase64String(key); Encoding.Default.GetString(key); Enco

我读过一些关于这方面的文章,我认为这里没有考虑到一个变量

我正在浏览其他人的代码,他们已经实现了三重des加密。他们没有把钥匙和iv作为字符串存储在某处。仅作为字节数组

我需要在C#之外进行同样的加密/解密调用,所以我正在尝试找出使用的密钥

我尝试过的事情:

byte[] key; // this is set
byte[] iv; // this is set

Convert.ToBase64String(key);
Encoding.Default.GetString(key);
Encoding.ASCII.GetString(key);
Encoding.UTF8.GetString(key);
也许其中一个的结果是正确的,但我需要做另一个转换来编码它

如果有关系,我只是尝试通过ruby或node.js将这些密钥与openssl一起使用


值得一提的是,我还尝试在ruby中创建一个字节数组并对其进行打包,但结果似乎仍然是错误的。

您尝试过使用字节数组的简单十六进制表示吗

string keyHex = BitConverter.ToString(key).Replace("-", "");
string ivHex = BitConverter.ToString(iv).Replace("-", "");

(根据其他系统的复杂程度,您可能还需要将字符串小写和/或在它们前面加上
0x

好的,我还需要在Ruby代码中重现.NET加密例程。几个小时后,我的头撞在墙上,下面是我的想法。忘记Base64吧,对C#部件使用以下代码:

BitConverter.ToString(键)。替换(“-”,“”)

存储结果。现在在Ruby中定义此函数:


用C部分的输出调用它,它将把hexa字符串转换成bin字符串。我的破坏者是在Ruby端进行转换。它对iv和密钥都有效。

简单编码不会加密或解密。我这里不加密或解密。只是想弄到一串钥匙
def self.hex_to_bin(s) 
  s.scan(/../).map { |x| x.hex.chr }.join
end