Я пытаюсь расшифровать строку, зашифрованную с помощью функции 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 #.
Спасибо.
Вы должны нарезать свою строку на последовательность байтов, которые декодируются по одному:
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;
}
И результатом должен быть массив байтов, а не строка ….
Других решений пока нет …