📄 crypt.h
字号:
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
// //
// RECUB //
// By Hirosh //
// www.hirosh.net //
// www.eos-india.net //
// //
//Thanks for starch at http://mir-os.sourceforge.net For the idea,I started this by //
//porting his version in linux to win32,after some time i stoped porting bc i prefer //
//a small EXE heheh..,and thanks to NC source too.. //
// //
// No CopyRights - Feel Free to Cut & Paste //
// //
// //
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "stdio.h"
#include "stdlib.h"
#define _WIN32_WINNT 0x0510
#include <wincrypt.h>
void EncryptRC4(char *key,char *data,int sizedata)
{
HCRYPTPROV hProv = NULL;
HCRYPTKEY hKey = NULL;
HCRYPTKEY hXchgKey = NULL;
HCRYPTHASH hHash = NULL;
DWORD dwLength;
BOOL bSuccess = CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, 0);
if (!bSuccess)
{
bSuccess = CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET);
}
if (!bSuccess)
{
bSuccess = CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET|CRYPT_MACHINE_KEYSET);
}
if (bSuccess)
{
if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash))
{
dwLength = strlen(key);
if (CryptHashData(hHash, (BYTE *)key, dwLength, 0))
{
if (CryptDeriveKey(hProv, CALG_RC4, hHash,CRYPT_EXPORTABLE, &hKey))
{
//dwLength=strlen(data);
dwLength=sizedata;
CryptEncrypt(hKey, 0, TRUE, 0,(BYTE *)data, &dwLength, dwLength);
data[dwLength]=0;
CryptDestroyKey(hKey);
}
}
CryptDestroyHash(hHash);
}
CryptReleaseContext(hProv, 0);
}
else {
char tt[100];
wsprintf(tt,"%d",GetLastError());
MessageBox(0,"Fauiled",tt,MB_OK);
}
return ;
}
void DecryptRC4(char *key,char* data,int sizedata)
{
HCRYPTPROV hProv = NULL;
HCRYPTKEY hKey = NULL;
HCRYPTKEY hXchgKey = NULL;
HCRYPTHASH hHash = NULL;
DWORD dwLength;
BOOL bSuccess = CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, 0);
if (!bSuccess)
{
bSuccess = CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET);
}
if (!bSuccess)
{
bSuccess = CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET|CRYPT_MACHINE_KEYSET);
}
if (bSuccess)
{
if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash))
{
dwLength =strlen(key);
if (CryptHashData(hHash, (BYTE *)key, dwLength, 0))
{
//CRYPT_EXPORTABLE
if (CryptDeriveKey(hProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, &hKey))
{
//dwLength =strlen(data);
dwLength =sizedata;
CryptDecrypt(hKey, 0, TRUE, 0, (BYTE *)data, &dwLength);
CryptDestroyKey(hKey);
}
}
CryptDestroyHash(hHash);
}
CryptReleaseContext(hProv, 0);
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -