1
我遇到了一個問題,它在C++中加密我的字符串,然後在PHP中解密。在C++方面,我認爲一切都很順利。以下是我的C++代碼。發出C++中的加密字符串並在PHP中解密
unsigned char inbuffer[1024];
unsigned char outbuffer[1024];
unsigned char oneKey[] = "abc";
AES_KEY key;
AES_set_encrypt_key(oneKey, 128, &key);
string straa("hello world\n");
memcpy((char*)inbuffer, straa.c_str(), 13);
AES_encrypt(inbuffer, encryptedbuffer, &key);
LPCSTR pszSource = (LPCSTR)encryptedbuffer;
DWORD nDestinationSize;
if (CryptBinaryToString(reinterpret_cast<const BYTE*> (pszSource), strlen(pszSource), CRYPT_STRING_BASE64, nullptr, &nDestinationSize))
{
LPTSTR pszDestination = static_cast<LPTSTR> (HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, nDestinationSize * sizeof(TCHAR)));
if (pszDestination)
{
if (CryptBinaryToString(reinterpret_cast<const BYTE*> (pszSource), strlen(pszSource), CRYPT_STRING_BASE64, pszDestination, &nDestinationSize))
{
printf("OUT: %s", pszDestination); // Base64 encoded output of encrypted string
}
}
}
這是我的PHP代碼:
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC'));
$out = openssl_decrypt(base64_decode("G6g0f/K7EzAw8fxn9BTFzw=="), 'AES-256-CBC', "abc", OPENSSL_RAW_DATA, $iv);
echo $out;
沒有從PHP代碼輸出。
的C++代碼將輸出以下內容:
OUT: G6g0f/K7EzAw8fxn9BTFzw==
我在這裏沒有幫助,因爲我沒有C++經驗,但我很感興趣(如果你有時間解釋),你在使用C++和PHP的組合嗎? –
當然我有時間。我正在創建一個登錄客戶端,它將客戶端傳輸到AES中的服務器數據,以防止人們查看網絡流量。 –
使用HTTPS保護客戶端到服務器的通信。 – zaph