저는이 C# 코드를 여기에두고 PHP로 이식하려고합니다. 이 코드는 특정 IV 및 Key를 사용하여 텍스트를 암호화하고 해독합니다. PHP로 변환하려고하지만 C# 바이트 배열 IV 이해하지 않습니다. IV와 키가 있습니다.C# Encrypter/Decrypter를 PHP로 변환
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_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, "KEY_HERE", $text, MCRYPT_MODE_ECB, "IV HERE", 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를 변환됩니다와 PHP 함수에 넣을 수있는 문자열의 키. 어떤 도움을 주셔서 감사합니다.
우리는 언어 번역 서비스가 제공되지 않습니다 –
와우, 그 충고에 감사드립니다! 하지만 내 질문을 읽으면 키와 IV를 문자열로 변환하는 데 도움이 필요하다는 것을 알 수 있습니다. 왜냐하면 내가 시도 할 때마다 실패했기 때문입니다. 다시 해봐, 아마도? ;) –
안녕하세요 radu, 당신은 평문과 그 EncryptCommand C# 코드에서 결과 암호 텍스트를 게시 할 수 있습니까? 감사. –