有没有同时懂 C#和 PHP 的大佬,帮看下 C#这段 aes 解密代码怎么翻译成 PHP 的好?

2021-08-11 14:22:48 +08:00
 UnrealEngine
public static string AESDecrypt(string text, string key, string iv)
{
var result = string.Empty;
if (key.Length != 16 || iv.Length != 16)
{
return result;
}
var encryptBytes = System.Convert.FromBase64String(text);
var aes = System.Security.Cryptography.Aes.Create();
aes.Mode = System.Security.Cryptography.CipherMode.CBC;
aes.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
aes.Key = System.Text.Encoding.UTF8.GetBytes(key);
aes.IV = System.Text.Encoding.UTF8.GetBytes(iv);
var transform = aes.CreateDecryptor();
result = System.Text.Encoding.UTF8.GetString(transform.TransformFinalBlock(encryptBytes, 0, encryptBytes.Length));
return result;
}
1451 次点击
所在节点    PHP
3 条回复
littleylv
2021-08-11 14:27:09 +08:00
/**
* decrypt
*
* @param string $input string to decrypted
* @return string string decrypted
*/
public function decrypt($input)
{
$decrypted = openssl_decrypt(base64_decode($input), 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));

return $decrypted;
}

/**
* hexToStr
*
* @param string $hex hex
* @return string string
*/
private function hexToStr($hex)
{
$string = '';
$len = strlen($hex);
for ($i = 0; $i < $len - 1; $i += 2) {
$string .= chr(hexdec($hex[$i] . $hex[$i + 1]));
}

return $string;
}
UnrealEngine
2021-08-11 14:50:30 +08:00
@littleylv 不行,哦忘了那个方法加密前还有另一个处理函数,

字符串:FHPdyFl63G6xl/2rge/VQDkCW79tNG4cAFlnulZHj2shQ1+m1GeY++7MdTX/+KD9/13vDremaHrSMRlg1Wd/HA==

KEY:1805412879961850

public static string AESDecrypt(string cipherText, string key)
{
var iv = string.Join("", key.ToCharArray().Reverse());
return AESDecrypt(cipherText, key, iv);
}
littleylv
2021-08-11 15:36:37 +08:00
你是一点都不懂 C#还是一点都不懂 PHP 还是都不懂
我都方法告诉你了,就算你前面有个处理函数,不就是把 key 反转成 iv 吗

$input = base64_decode('FHPdyFl63G6xl/2rge/VQDkCW79tNG4cAFlnulZHj2shQ1+m1GeY++7 MdTX/+KD9/13vDremaHrSMRlg1Wd/HA==');
$key = '1805412879961850';
$iv = strrev($key);
$decrypted = openssl_decrypt($input, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
var_dump($decrypted); // 打印结果:string(49) "{"ActionId":1000,"SourceName":"YF37ZTOVEN6NRZO3"}"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/795078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX