Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#加密/解密程序转换为PHP_C#_Php_Encryption_Mcrypt - Fatal编程技术网

将C#加密/解密程序转换为PHP

将C#加密/解密程序转换为PHP,c#,php,encryption,mcrypt,C#,Php,Encryption,Mcrypt,我这里有一个C代码,我正在尝试将它移植到PHP。此代码使用特定的IV和密钥对文本进行加密和解密。我试图将其转换为PHP,但我不理解它的C#字节数组IV。这是静脉注射,然后是钥匙 private static readonly byte[] IV = new byte[32] { (byte) 143, (byte) 18, (byte) 207, (byte) 184, (byte) 193, (byte) 173, (byte) 252, (byte) 103,

我这里有一个C代码,我正在尝试将它移植到PHP。此代码使用特定的IV和密钥对文本进行加密和解密。我试图将其转换为PHP,但我不理解它的C#字节数组IV。这是静脉注射,然后是钥匙

private static readonly byte[] IV = new byte[32]
{
  (byte) 143,
  (byte) 18,
  (byte) 207,
  (byte) 184,
  (byte) 193,
  (byte) 173,
  (byte) 252,
  (byte) 103,
  (byte) 12,
  (byte) 202,
  (byte) 6,
  (byte) 9,
  (byte) 162,
  (byte) 187,
  (byte) 221,
  (byte) 66,
  (byte) 81,
  (byte) 192,
  (byte) 51,
  (byte) 186,
  (byte) 197,
  (byte) 251,
  (byte) 90,
  (byte) 247,
  (byte) 111,
  (byte) 237,
  (byte) 182,
  (byte) 168,
  (byte) 195,
  (byte) 0,
  (byte) 156,
  (byte) 133
};
private static readonly byte[] Key = new byte[32]
{
  (byte) 130,
  (byte) 94,
  (byte) 5,
  (byte) 131,
  (byte) 159,
  (byte) 45,
  (byte) 165,
  (byte) 206,
  (byte) 66,
  (byte) 115,
  (byte) 19,
  (byte) 144,
  (byte) 242,
  (byte) 142,
  (byte) 97,
  (byte) 6,
  (byte) 50,
  (byte) 47,
  (byte) 92,
  (byte) 70,
  (byte) 241,
  (byte) 179,
  (byte) 77,
  (byte) 121,
  (byte) 222,
  (byte) 243,
  (byte) 13,
  (byte) 171,
  (byte) 16,
  (byte) 92,
  (byte) 197,
  (byte) 174
};
我试着把它转换成字符串,但是我得到了很多奇怪的字符。在PHP中,我希望能够做到这一点:
base64_编码(mcrypt_加密(mcrypt_RIJNDAEL_256,“这里的密钥”,$text,mcrypt_模式,ECB,“这里的IV”,mcrypt_RAND))

以下是C#加密和解密函数:

private string EncryptCommand(string command)
{
  using (Rijndael rijndael = (Rijndael) new RijndaelManaged())
  {
    rijndael.KeySize = 256;
    rijndael.BlockSize = 256;
    rijndael.Padding = PaddingMode.PKCS7;
    using (MemoryStream memoryStream = new MemoryStream())
    {
      using (CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, rijndael.CreateEncryptor(API.Key, API.IV), CryptoStreamMode.Write))
      {
        byte[] bytes = Encoding.UTF8.GetBytes(command);
        cryptoStream.Write(bytes, 0, bytes.Length);
        cryptoStream.FlushFinalBlock();
        return Convert.ToBase64String(memoryStream.ToArray());
      }
    }
  }
}

private byte[] DecryptCommand(byte[] command)
{
  using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
  {
    rijndaelManaged.KeySize = 256;
    rijndaelManaged.BlockSize = 256;
    rijndaelManaged.Padding = PaddingMode.PKCS7;
    using (MemoryStream memoryStream = new MemoryStream())
    {
      using (CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, rijndaelManaged.CreateDecryptor(API.Key, API.IV), CryptoStreamMode.Write))
      {
        cryptoStream.Write(command, 0, command.Length);
        cryptoStream.FlushFinalBlock();
        return memoryStream.ToArray();
      }
    }
  }
}
}

我遇到的主要问题是将IV和Key转换成可以放入PHP函数的字符串。非常感谢您的帮助。

在PHP中,字节数组的等价物是字符串

$iv  = array(143,18,207,184,193,173,252,103,12,202,6,9,162,187,221,66,81,192,51,186,197,251,90,247,111,237,182,168,195,0,156,133);
$key = array(130,94,5,131,159,45,165,206,66,115,19,144,242,142,97,6,50,47,92,70,241,179,77,121,222,243,13,171,16,92,197,174);

$str_iv  = implode(array_map("chr", $iv));
$str_key = implode(array_map("chr", $key));
所以我所做的就是获取字节数组,将每个数组值转换为ASCII字符,并将它们连接为字符串


我已经确认
$stru_iv
等于
Encoding.ASCII.GetString(Key,0,Key.Length)

我们不是语言翻译服务哇,谢谢你的建议!但是如果你读了我的问题,你就会知道我在寻求帮助,把键和IV转换成字符串,因为每次我尝试都失败了。也许再试一次?;)嘿,拉杜,你能发布一些明文和加密命令C代码产生的密文吗?谢谢。简单:“测试”::加密:“WpvppvbH0JR+9QvXrS+Fxx478Y8rg3Cu/ZMUee+vcng=”(不知道这有多宽泛,用户想知道PHP中是否存在字节数组(如C#中的字节数组)。对我来说似乎很简单和具体。