91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1.81MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-09-01
  • 語言: C/C++
  • 標簽: C語言??CryptoAPI??

資源簡介

C語言編寫的,利用下CryptoAPI加密系統,代碼有詳細注釋。

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?“Common.h“
//========================================================================
//加/解密文件函數
BOOL?EncryptOrDecryptFile(BOOL?flag?PCHAR?srcFileName?PCHAR?dstFileName?PCHAR?password)
{
//--------------------------------------------------------------------
//?變量定義
FILE?*srcFile;?
FILE?*dstFile;?

HCRYPTPROV?hCryptProv;?
HCRYPTKEY?hKey;?


PBYTE?buffer;?
DWORD?blockLen;?
DWORD?bufferLen;?
DWORD?count;?

//--------------------------------------------------------------------
//獲得一個CSP句柄
hCryptProv?=?GetCryptProvHandle();

//--------------------------------------------------------------------
//?創建一個會話密鑰(Session?Key);
//?會話密鑰也叫對稱密鑰,用于對稱加密算法。
hKey?=?CreateSessionKey(hCryptProv?password);

//--------------------------------------------------------------------
//?因為加密算法是按ENCRYPT_BLOCK_SIZE?大小的塊加密的,所以被加密的
//?數據長度必須是ENCRYPT_BLOCK_SIZE?的整數倍。
//?下面設定每一次加密的數據長度。
blockLen?=?1000?-?1000?%?ENCRYPT_BLOCK_SIZE;?

//--------------------------------------------------------------------
//如果使用塊編碼,則需要額外空間
if(ENCRYPT_BLOCK_SIZE?>?1)?
bufferLen?=?blockLen?+?ENCRYPT_BLOCK_SIZE;?
else?
bufferLen?=?blockLen;?

//--------------------------------------------------------------------
//?為buffer分配內存
buffer?=?(BYTE?*)malloc(bufferLen);

//--------------------------------------------------------------------
//?打開源文件
if(srcFile?=?fopen(srcFileName“rb“))//r:讀,b:二進制
{
printf(“成功打開源文件?%s.?\n“?srcFileName);
}
else
{?
HandleError(“打開源文件時出錯!“);
}?

//--------------------------------------------------------------------
//?打開目標文件,如果不存在則創建之
if(dstFile?=?fopen(dstFileName“wb“))//w:寫,b:二進制
{
printf(“成功打開目標文件?%s.?\n“?dstFileName);
}
else
{
HandleError(“打開目標文件時出錯!“);?
}

//?循環讀取源文件內容塊,加密內容塊并寫入到目標文件。
do?
{?
count?=?fread(buffer?1?blockLen?srcFile);//讀取一塊到buffer,返回字節數?
if(ferror(srcFile))
{?
HandleError(“讀取源文件時出錯!\n“);
}

//--------------------------------------------------------------------
if?(flag?==?RUN_ENCRYPT)
{
//?加密buffer中的數據
if(!CryptEncrypt(
hKey //會話密鑰
0 //如果數據同時進行散列和加密,這里傳入一個散列對象
feof(srcFile) //如果是最后一個被加密的塊,輸入TRUE.如果不是輸入FALSE.
//這里通過判斷是否到文件尾來決定是否為最后一塊。
0 //保留
buffer //輸入被加密數據,輸出加密后的數據
&count //輸入被加密數據實際長度,輸出加密后數據長度
bufferLen)) //buffer的大小。
{?
HandleError(“調用函數CryptEncrypt時出錯.?\n“);?
}?
}

if?(flag?==?RUN_DECRYPT)
{
//?解密buffer中的數據
if(!CryptDecrypt(hKey?0?feof(srcFile)?0 buffer &count))
{
HandleError(“調用函數CryptDecrypt時出錯!“);?
}
}
//--------------------------------------------------------------------
//?將加密后的buffer數據寫入到目標文件中
fwrite(buffer?1?count?dstFile);?
if(ferror(dstFile))
{?
HandleError(“寫入目標文件時出錯!“);
}

}?while(!feof(srcFile));?

//--------------------------------------------------------------------
//?釋放相關資源

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-04-13?00:56??EncryptFileDemo\
?????目錄???????????0??2015-04-13?01:49??EncryptFileDemo\Common\
?????文件????????5937??2015-04-13?01:48??EncryptFileDemo\Common\Common.cpp
?????文件?????????692??2015-04-13?01:49??EncryptFileDemo\Common\Common.h
?????目錄???????????0??2015-04-18?18:40??EncryptFileDemo\EncryptFile\
?????目錄???????????0??2015-04-15?10:00??EncryptFileDemo\EncryptFile\Debug\
?????文件???????44134??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\Common.obj
?????文件???????????0??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\Common.sbr
?????文件?????2860032??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\EncryptFile.bsc
?????文件??????196727??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\EncryptFile.exe
?????文件??????230964??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\EncryptFile.ilk
?????文件?????1811244??2015-04-15?10:00??EncryptFileDemo\EncryptFile\Debug\EncryptFile.pch
?????文件??????508928??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\EncryptFile.pdb
?????文件???????????0??2013-12-31?11:57??EncryptFileDemo\EncryptFile\Debug\EncryptFile.sbr
?????文件????????2591??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Debug\StdAfx.obj
?????文件????????4204??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Debug\StdAfx.sbr
?????文件??????156672??2015-04-15?10:00??EncryptFileDemo\EncryptFile\Debug\vc60.idb
?????文件??????167936??2015-04-15?10:00??EncryptFileDemo\EncryptFile\Debug\vc60.pdb
?????文件????????7002??2015-04-15?10:00??EncryptFileDemo\EncryptFile\EncryptFile.cpp
?????文件????????3461??2015-04-15?09:58??EncryptFileDemo\EncryptFile\EncryptFile.dsp
?????文件?????????530??2015-04-15?10:13??EncryptFileDemo\EncryptFile\EncryptFile.dsw
?????文件???????50176??2015-04-15?10:13??EncryptFileDemo\EncryptFile\EncryptFile.ncb
?????文件???????48640??2015-04-15?10:13??EncryptFileDemo\EncryptFile\EncryptFile.opt
?????文件????????3196??2015-04-15?10:00??EncryptFileDemo\EncryptFile\EncryptFile.plg
?????文件????????1238??2013-12-03?22:43??EncryptFileDemo\EncryptFile\ReadMe.txt
?????目錄???????????0??2015-04-13?00:56??EncryptFileDemo\EncryptFile\Release\
?????文件????????5000??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Release\Common.obj
?????文件???????49152??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Release\EncryptFile.exe
?????文件????????5866??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Release\EncryptFile.obj
?????文件??????203808??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Release\EncryptFile.pch
?????文件?????????282??2013-12-30?10:45??EncryptFileDemo\EncryptFile\Release\StdAfx.obj
............此處省略7個文件信息

評論

共有 條評論