Witam,
chciałbym powiązać aplikację WinRT z serwerem w PHP. Mam implementacje AesCbcPkcs7 w c# i to samo chciałbym zrobić w PHP. Kod w c#
public static string Encrypt(string Login)
{
var input = CryptographicBuffer.ConvertStringToBinary(Login, BinaryStringEncoding.Utf8);
var BinKey = CryptographicBuffer.ConvertStringToBinary(Key, BinaryStringEncoding.Utf8);
var BinIV = CryptographicBuffer.ConvertStringToBinary(IV, BinaryStringEncoding.Utf8);
var Encryptor = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7);
var SymmKey = Encryptor.CreateSymmetricKey(BinKey);
var encrypted = CryptographicEngine.Encrypt(SymmKey, input, BinIV);
return CryptographicBuffer.EncodeToBase64String(encrypted);
}
public static string Decrypt(string LoginToDecode)
{
var input = CryptographicBuffer.DecodeFromBase64String(LoginToDecode);
var BinKey = CryptographicBuffer.ConvertStringToBinary(Key, BinaryStringEncoding.Utf8);
var BinIV = CryptographicBuffer.ConvertStringToBinary(IV, BinaryStringEncoding.Utf8);
var Decryptor = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7);
var SymmKey = Decryptor.CreateSymmetricKey(BinKey);
var Decrypted = CryptographicEngine.Decrypt(SymmKey, input, BinIV);
return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, Decrypted);
}
Tu w PHP
function decryptRJ128($key,$iv,$string_to_decrypt)
{
$string_to_decrypt = base64_decode($string_to_decrypt);
$rtn = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $string_to_decrypt, MCRYPT_MODE_CBC, $iv);
$rtn = rtrim($rtn, "\0\4");
return($rtn);
}
function encryptRJ128($key,$iv,$string_to_encrypt)
{
$rtn = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string_to_encrypt, MCRYPT_MODE_CBC, $iv);
$rtn = base64_encode($rtn);
return($rtn);
}
Mając na wejściu:
Key = "lkirwf897+22#bbt"
•IV = "741952hheeyy66#c"
•password = "Asd"
Mam "eSy8m8ygN7rtC80DMdGOUQ==" z c# i
"GOO7yZL05XFce+cR4uIHRg==" w PHP.
Chciałbym, aby kod w c# i PHP były równoważne. Słabo znam się na PHP, więc jeśli o niego, proszę o dość łopatologiczne wyjaśnienia.