【问题标题】:how do I copy string into bytearray for CryptUnprotectData如何将字符串复制到 CryptUnprotectData 的字节数组中
【发布时间】:2011-11-14 17:38:58
【问题描述】:

我正在尝试将数据从 sqlite3 文件传递​​到 CryptUnprotectData。

使用 sqlite3 库选择数据后,我可以将其打印到控制台。这是我要解密的数据(argv[i]):

printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

十六进制(password_value)= 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000EEB05AE6044E5749B7BB63FAB045C99C00000000020000000000106600000001000020000000F6027D9B2EA5742C36075600DDFA7ECDAFD55BE247F984FBC92BFC9C7F9DE9520000000000000000020000200000006EC519ACA4DA90EFA7149FF16502E0985F4B86C75F52A1EF7CAAAC5FC88E48CC10000000F0B305A4829F3D397F1379CD63EAB48F400000001BD5A3B07DAA31AE35A2FCE8BDDBBA28055307E3137B3EBE899C0A0AD35E905AE125FF0ACBCA2982169ABAB0AE899493446897297D47BA65A09115AB13821EFE P>

这是解密函数的原型:

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.pbData = ??? DataEncrypted.cbData = strlen(argv[i])/2

并将 argv[i] 中的数据复制到字节数组中...然后设置 pbData == 指向字节数组的指针。

我不确定那部分该怎么做...有什么建议吗?

【问题讨论】:

    标签: c++ windows bytearray


    【解决方案1】:

    Here's a good answer。是Java,但算法是一样的:

    public static byte[] hexStringToByteArray(String s) {
        int len = s.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                                 + Character.digit(s.charAt(i+1), 16));
        }
        return data;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      相关资源
      最近更新 更多