繁体   English   中英

C#使用CakePHP的Security :: rijndael解密Rijndael加密的字符串

[英]C# decrypt Rijndael encrypted string using CakePHP's Security::rijndael

我正在尝试解密使用CakePHP的Security :: rijndael()函数加密的字符串。 这是我的代码:

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

请注意,加密后,我将使用bin2hex()函数将其转换为可以存储在数据库中的十六进制字符串。

在CakePHP中,我可以使用以下方法轻松解密:

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

我正在尝试通过首先运行hex2bin来使用C#实现相同类型的解密。 我尝试使用网上发现的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;
}

结果应该是字节数组,而不是字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM