⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helixdll.cpp

📁 简单的加密算法
💻 CPP
字号:
// HelixDll.cpp : Defines the entry point for the DLL and its main exports
//
#include "stdafx.h"
#include "..\Helix.h"
#include "..\HelixAPI.h"

BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
  if (dwReason == DLL_PROCESS_ATTACH)
    DisableThreadLibraryCalls(hInstance);

  return TRUE;
}

HHELIX WINAPI HelixOpen()
{
  CHelix* pHelix = new CHelix;
  if (pHelix == NULL)
    SetLastError(ERROR_NOT_ENOUGH_MEMORY);

  return (HHELIX) pHelix;
}

BOOL WINAPI HelixClose(HHELIX hEntry)
{
  //Assume the worst
  BOOL bSuccess = FALSE;

  CHelix* pHelix = (CHelix*) hEntry;  
  if (pHelix)
  {
    delete pHelix;
    bSuccess = TRUE;
  }
  else
    SetLastError(ERROR_INVALID_PARAMETER);

  return bSuccess;
}

BOOL WINAPI HelixSetKey(HHELIX hEntry, const BYTE* pbyKey, DWORD dwKeyLength)
{
  //Assume the worst
  BOOL bSuccess = FALSE;

  CHelix* pHelix = (CHelix*) hEntry;  
  if (pHelix)
    bSuccess = pHelix->SetKey(pbyKey, dwKeyLength);
  else
    SetLastError(ERROR_INVALID_PARAMETER);

  return bSuccess;
}

BOOL  WINAPI HelixEncrypt(HHELIX hEntry, const BYTE* pbyPlainText, DWORD dwPlainTextSize, const BYTE* pNonce, BYTE* pbyCipherText, BYTE* pMac)
{
  //Assume the worst
  BOOL bSuccess = FALSE;

  CHelix* pHelix = (CHelix*) hEntry;  
  if (pHelix)
  {
    CHelixNonce nonce;
    memcpy(nonce.m_Data, pNonce, sizeof(nonce.m_Data));
    
    CHelixMAC mac;

    bSuccess = pHelix->Encrypt(pbyPlainText, dwPlainTextSize, nonce, pbyCipherText, mac);
    if (bSuccess)
      memcpy(pMac, mac.m_Data, sizeof(mac.m_Data));
  }
  else
    SetLastError(ERROR_INVALID_PARAMETER);

  return bSuccess;
}

DWORD WINAPI HelixDecrypt(HHELIX hEntry, const BYTE* pbyCipherText, DWORD dwCipherTextSize, const BYTE* pNonce, const BYTE* pMac, BYTE* pbyPlainText)
{
  //Assume the worst
  BOOL bSuccess = FALSE;

  CHelix* pHelix = (CHelix*) hEntry;  
  if (pHelix)
  {
    CHelixNonce nonce;
    memcpy(nonce.m_Data, pNonce, sizeof(nonce.m_Data));

    CHelixMAC mac;
    memcpy(mac.m_Data, pMac, sizeof(mac.m_Data));

    bSuccess = pHelix->Decrypt(pbyCipherText, dwCipherTextSize, nonce, mac, pbyPlainText);
  }
  else
    SetLastError(ERROR_INVALID_PARAMETER);

  return bSuccess;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -