我正在嘗試將數據從sqlite3文件傳遞給CryptUnprotectData。如何將字符串複製到字節數組中作爲CryptUnprotectData
使用sqlite3庫選擇數據後,我可以將其打印到控制檯。這是我試圖對數據進行解密(的argv [1]):
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
十六進制(password_value)= 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000EEB05AE6044E5749B7BB63FAB045C99C00000000020000000000106600000001000020000000F6027D9B2EA5742C36075600DDFA7ECDAFD55BE247F984FBC92BFC9C7F9DE9520000000000000000020000200000006EC519ACA4DA90EFA7149FF16502E0985F4B86C75F52A1EF7CAAAC5FC88E48CC10000000F0B305A4829F3D397F1379CD63EAB48F400000001BD5A3B07DAA31AE35A2FCE8BDDBBA28055307E3137B3EBE899C0A0AD35E905AE125FF0ACBCA2982169ABAB0AE899493446897297D47BA65A09115AB13821EFE
這是原型爲函數,將解密:
BOOL WINAPI CryptUnprotectData(
__in DATA_BLOB *pDataIn,
__out_opt LPWSTR *ppszDataDescr,
__in_opt DATA_BLOB *pOptionalEntropy,
__in PVOID pvReserved,
__in_opt CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
__in DWORD dwFlags,
__out DATA_BLOB *pDataOut
);
DATA_BLOB結構是這樣的:
typedef struct _CRYPTOAPI_BLOB {
DWORD cbData;
BYTE *pbData;
};
其中: cbData ==包含計數,以字節數據的DWORD變量。 pbData ==指向數據緩衝區的指針。
我認爲什麼,我需要做的就是創建這樣的結構: DATA_BLOB DataEncrypted;
DataEncrypted.pbData = ??? DataEncrypted.cbData = strlen(argv [i])/ 2
並將argv [i]中的數據複製到字節數組中...然後將pbData ==指針設置爲字節數組。
我不知道該怎麼做那部分...有什麼建議嗎?