[英]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.