C # расшифровывает зашифрованную строку Rijndael, используя CakePHP’s Security :: rijndael

Я пытаюсь расшифровать строку, зашифрованную с помощью функции Security :: rijndael () CakePHP. Вот мой код:

$enc = bin2hex( Security::rijndael( $field, Configure::read('Security.key'), 'encrypt' ) );

Обратите внимание, что после шифрования я использую функцию bin2hex (), чтобы преобразовать ее в шестнадцатеричную строку, которая может храниться в БД.

В CakePHP я могу легко расшифровать это, используя:

$dec = Security::rijndael( hex2bin( $field ), Configure::read( 'Security.key' ), 'decrypt' );

Я пытаюсь добиться такого же рода расшифровки с помощью C #, сначала запустив hex2bin. Я попытался использовать пример hex2bin (), который нашел в сети:

private string hex2bin( string hexvalue ) {
string binaryval = "";
binaryval = Convert.ToString( Convert.ToInt64( hexvalue, 16 ), 2 );
return binaryval;
}

…но это продолжает возвращать ошибку: Значение было слишком большим или слишком маленьким для UInt64 и я не могу выйти за рамки этой точки.

Я ищу идеи о том, как полностью изменить процесс в C #.

Спасибо.

0

Решение

Вы должны нарезать свою строку на последовательность байтов, которые декодируются по одному:

private byte[] hex2bin( string hexvalue )
{
byte [] result = new byte[hexvalue.Length / 2];;

for (int pos = 0; pos < hexvalue.Length; po+=2)
byte[pos/2] =  Convert.Byte( hexvalue.SubString(pos, 2),  16 );

return result;
}

И результатом должен быть массив байтов, а не строка ….

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]