2013-06-23 7 views
2

Я прочитал несколько статей об этом, и я думаю, что есть переменная, которую я здесь не рассматриваю.C# byte array to string

Я перехожу через чужой код, где они реализовали шифрование по три раза. У них нет ключа и 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); 

Может быть, результаты одного из них является правильным, но мне нужно сделать еще одно преобразование, чтобы закодировать его?

В случае, если это имеет значение, я просто пытаюсь использовать эти ключи с openssl через ruby ​​или node.js.

Для чего это стоит, я также попытался создать массив байтов в рубине и сделать на них пакет, но все же кажется неправильным результатом.

+0

Простая кодировка не собирается шифровать или расшифровывать. – Paparazzi

+0

Я не шифрую и не расшифрую здесь. просто пытаюсь получить строку ключей – JohnAgan

ответ

0

Вы пытались использовать прямое шестнадцатеричное представление ваших байтовых массивов?

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

(Вам также может потребоваться в нижний регистр строк и/или префикс их 0x, в зависимости от того, как суетливая другие системы.)

0

Хорошо, я также должен был воспроизвести процедуру .NET криптография в коде Ruby. Через пару часов, стукнув головой к стене, вот что я понял. Забудьте о Base64, используйте этот код для C# часть:

BitConverter.ToString (ключ) .Привернуть ("-", "")

сохранить результат. Теперь определит эту функцию в Ruby:

def self.hex_to_bin(s) 
    s.scan(/../).map { |x| x.hex.chr }.join 
end 

И называют это с выходом из C# части, он собирается преобразовать строку гекса в бункерной строку. Для меня это был переход на сторону Ruby. Он работает как для iv, так и для ключа.