WEB开发网
开发学院软件开发VC 使用Visual C++创建Crypto加/解密组件 阅读

使用Visual C++创建Crypto加/解密组件

 2008-11-13 19:30:27 来源:WEB开发网   
核心提示: 我们通过创建一个 one-way-hash密码得到session key, // Create a hash object.if ( ! CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) {dwError = GetLastError();sp

我们通过创建一个 one-way-hash密码得到session key。

// Create a hash object.
  if ( ! CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) {
  dwError = GetLastError();
  sprintf(buffer, "Error %x during CryptCreateHash", dwError);
  return Error(buffer);
  }
  // Hash in the password.
  if ( ! CryptHashData(hHash, pbPassword, SysStringLen(bstrPassword), 0)) {
  dwError = GetLastError();
  sprintf(buffer, "Error %x during CryptHashData", dwError);
  return Error(buffer);
  }
  // Derive a session key from the hash object.
  if ( ! CryptDeriveKey(hProv, ENCRYPT_ALGORITHM, hHash, 0, &hKey)) {
  dwError = GetLastError();
  sprintf(buffer, "Error %x during CryptDeriveKey", dwError);
  return Error(buffer);
  }
  // Destroy hash object.
  CryptDestroyHash(hHash);
  hHash = 0;

现在来加密我们的数据。

// Encrypt the Data.
  dwCryptDataLen = dwDataLen;
  if ( ! CryptEncrypt(hKey, 0, true, 0, pbData, &dwCryptDataLen, dwDataLen)) {
  dwError = GetLastError();
  sprintf(buffer, "Error %x during CryptEncrypt", dwError);
  return Error(buffer);
  }

我们将加密后的数据放入一个数组中,而不是一个string里,因为它可能会包含null。虽然 BSTR 能处理null的情况,但不能保证用户调用环境能正确处理,所以一个数组是最好的选择。

上一页  1 2 3 4 5  下一页

Tags:使用 Visual 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接