AES между C # и PHP (или Javascript / или Python) - PullRequest
0 голосов
/ 27 марта 2019

Клиент использует C # для шифрования строки

И моему приложению необходимо сгенерировать ту же строку шифрования, чтобы соответствовать его строке шифрования

Но я могу только PHP / Javascript / Python

Как написать код PHP, Javascript или Python для генерации одинаковой строки шифрования

Например. Использование клиента «TAIEX» превратится в «JrmEfbwGlF7w67KemS2zWw ==»

Некоторая информация: AES, CBC, Rijndael, PKCS7, KeySize = 256, BlockSize = 128

Следующий код C # был предоставлен от Клиента

internal string GetAESEncryptString(string inputString)
{
    string password = @"076FD250140F11E2892E0800200C9A66";
    string saltString = @"5738C760140F11E2";
    byte[] binputString = Encoding.UTF8.GetBytes(inputString);
    byte[] saltBytes = Encoding.UTF8.GetBytes(saltString);
    string encryptedData = null;

    try
    {
        RijndaelManaged aes = new RijndaelManaged();
        Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password, saltBytes, 100);
        aes.Mode = CipherMode.CBC;
        aes.Padding = PaddingMode.PKCS7;
        aes.KeySize = 256;
        aes.Key = key.GetBytes(32);
        aes.BlockSize = 128;
        aes.GenerateIV();
        aes.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        //aes.IV = key.GetBytes(16);

        ICryptoTransform encryptor = aes.CreateEncryptor();
        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
        cryptoStream.Write(binputString, 0, binputString.Length);
        cryptoStream.FlushFinalBlock();
        cryptoStream.Close();

        byte[] encryptBytes = memoryStream.ToArray();
        encryptedData = Convert.ToBase64String(encryptBytes);
    }
    catch (Exception ex)
    {
        throw ex;
    }
    return encryptedData;
}

Спасибо, что нашли время. Я благодарю вас от всего сердца.

...