亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inituser.c

?? C++編程實踐與技巧一書各章節的源碼
?? C
字號:
//decryptfile 文件解密演示程序
#include <stdio.h>
#include <windows.h>
#include <wincrypt.h>
#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
void HandleError(char *s);

//--------------------------------------------------------------------
//加密算法和分組長度標識

#define ENCRYPT_ALGORITHM CALG_RC2 
#define ENCRYPT_BLOCK_SIZE 8 

// 解密函數聲明
 
BOOL CryptDecryptFile(
     PCHAR szSource, //需要解密的密文文件
     PCHAR szDestination, //解密好的明文文件
     PCHAR szPassword//口令
	 ); 

void main(void) 
{ 
    PCHAR szSource; 
    PCHAR szDestination; 
    PCHAR szPassword; 
    int  response;
 //為密文文件名分配空間
if(!(szSource=(char *)malloc(100)))
    HandleError("內存溢出");
//為明文文件名分配空間
if(!(szDestination=(char *)malloc(100)))
    HandleError("內存溢出");
//為口令字分配空間
if(!(szPassword=(char *)malloc(100)))
    HandleError("內存溢出");

printf("文件解密演示程序\n\n");
printf("請輸入需要解密的文件名: ");
scanf("%s",szSource);
printf("請輸入輸出(明文)文件名: ");
scanf("%s",szDestination);
printf("解密文件是否需要口令? ( y/n ) ");
response=_getche();
if(response == 'y')
{
    printf("請輸入口令:");
    scanf("%s",szPassword);
}
else
{
    printf("解密密鑰的產生不需要口令\n");
    free(szPassword);
    szPassword = NULL;
}

//--------------------------------------------------------------------
//調用CryptEncryptFile函數完成實際加密操作
 
if(CryptDecryptFile(szSource, szDestination, szPassword))
{
       printf("解密文件%s成功\n", szSource);
       printf("解密好的數據在文件%s中\n",szDestination);
}
else
{
      HandleError("解密文件錯誤!"); 
} 
} // End of main
 //--------------------------------------------------------------------
//解密函數CryptDecryptFile定義。

static BOOL CryptDecryptFile(
     PCHAR szSource, 
     PCHAR szDestination, 
     PCHAR szPassword) 
{ 
//--------------------------------------------------------------------
//函數參數包括:
//     szSource:輸入的密文文件名。
//     szDestination:輸出的解密好的文件名。
//     szPassword:口令字符串,或者為空。
{ 
//--------------------------------------------------------------------
// 聲明和初始化本地變量

FILE *hSource; 
FILE *hDestination; 

HCRYPTPROV hCryptProv; 
HCRYPTKEY hKey; 
HCRYPTHASH hHash; 
 
PBYTE pbKeyBlob = NULL; 
DWORD dwKeyBlobLen; 
 
PBYTE pbBuffer; 
DWORD dwBlockLen; 
DWORD dwBufferLen; 
DWORD dwCount; 

BOOL status = FALSE; 
 
//--------------------------------------------------------------------
//打開需要解密的密文文件
if(!(hSource = fopen(szSource,"rb"))) 
{
   HandleError("密文文件打開失敗!");
}
//--------------------------------------------------------------------
//打開要存放明文的文件

if(!(hDestination = fopen(szDestination,"wb")))
{
    HandleError("明文文件打開失敗!");
} 
//--------------------------------------------------------------------
//獲取默認CSP句柄
if(!CryptAcquireContext(
      &hCryptProv, 
      NULL, 
      NULL, 
      PROV_RSA_FULL, 
      0))
{
   HandleError("調用CryptAcquireContext函數出錯!"); 
}
//--------------------------------------------------------------------
// 檢查口令是否存在

if(!szPassword) //如果不使用口令
{ 
//--------------------------------------------------------------------
//用存儲的會話密鑰解密文件

//從源文件(密文)中讀取密鑰塊長度,并分配內存。 
fread(&dwKeyBlobLen, sizeof(DWORD), 1, hSource); 
if(ferror(hSource) || feof(hSource))
{
    HandleError("文件頭讀取失敗!"); 
}
if(!(pbKeyBlob = (BYTE *)malloc(dwKeyBlobLen)))
{
    HandleError("內存分配錯誤"); 
}
//--------------------------------------------------------------------
//從源文件(密文)中讀取密鑰塊。

fread(pbKeyBlob, 1, dwKeyBlobLen, hSource); 
if(ferror(hSource) || feof(hSource))
{
    HandleError("讀取文件頭失敗\n"); 
}
//--------------------------------------------------------------------
//把密鑰塊輸入到CSP中
if(!CryptImportKey(
      hCryptProv, 
      pbKeyBlob, 
      dwKeyBlobLen, 
      0, 
      0, 
      &hKey))
{
   HandleError("調用CryptImportKey函數失敗!"); 
}
} 
else 
{ 

//從口令獲取的會話密鑰解密文件。
 
//創建哈希對象
if(!CryptCreateHash(
       hCryptProv, 
       CALG_MD5, 
       0, 
       0, 
       &hHash))
{
    HandleError("調用CryptCreateHash函數出錯!");
}
//--------------------------------------------------------------------
//把口令增加到哈希對象 
if(!CryptHashData(
       hHash, 
       (BYTE *)szPassword, 
       strlen(szPassword), 
       0)) 
{
    HandleError("調用CryptHashData函數出錯!"); 
}
//--------------------------------------------------------------------
//從哈希對象獲取會話密鑰。

if(!CryptDeriveKey(
      hCryptProv, 
      ENCRYPT_ALGORITHM, 
      hHash, 
      0, 
      &hKey))
{ 
   HandleError("調用CryptDeriveKey函數失敗!"); 
}
//--------------------------------------------------------------------
//銷毀哈希對象

CryptDestroyHash(hHash); 
hHash = 0; 
} 
//--------------------------------------------------------------------
//到此為止已經產生了用于解密的會話密鑰。
//可能是從密鑰塊中獲取的,也可能是從口令中獲取。
 
//判斷一次解密的字節數,它必須是ENCRYPT_BLOCK_SIZE的倍數。

dwBlockLen = 1000 - 1000 % ENCRYPT_BLOCK_SIZE; 
dwBufferLen = dwBlockLen; 

//分配內存

if(!(pbBuffer = (BYTE *)malloc(dwBufferLen)))
{
   HandleError("Out of memory!\n"); 
}
//解密文件,并寫明文文件

do { 
//--------------------------------------------------------------------

dwCount = fread(
     pbBuffer, 
     1, 
     dwBlockLen, 
     hSource); 
if(ferror(hSource))
{
    HandleError("Error reading ciphertext!");
}
if(!CryptDecrypt(
      hKey, 
      0, 
      feof(hSource), 
      0, 
      pbBuffer, 
      &dwCount))
{
   HandleError("Error during CryptDecrypt!"); 
}
//寫明文文件

fwrite(
    pbBuffer, 
    1, 
    dwCount, 
    hDestination); 
if(ferror(hDestination))
{
   HandleError("Error writing plaintext!"); 
}
} 
while(!feof(hSource)); 
status = TRUE; 

//關閉文件
if(hSource) 
   fclose(hSource); 
if(hDestination) 
    fclose(hDestination); 
 
//--------------------------------------------------------------------
//釋放內存

if(pbKeyBlob) 
     free(pbKeyBlob);

if(pbBuffer) 
     free(pbBuffer); 
 
//銷毀會話密鑰

if(hKey) 
    CryptDestroyKey(hKey); 

//銷毀哈希對象
if(hHash) 
    CryptDestroyHash(hHash); 

//釋放CSP句柄

if(hCryptProv) 
    CryptReleaseContext(hCryptProv, 0); 

return status;
} 
}
//錯誤處理函數
void HandleError(char *s)
{
    printf("在運行程序時出現錯誤\n");
    printf("%s\n",s);
    printf("錯誤代號 %x\n.",GetLastError());
    printf("程序終止運行\n");
    exit(1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久蜜臀aⅴ| 一本色道**综合亚洲精品蜜桃冫| 久久9热精品视频| 91视视频在线观看入口直接观看www | 青青草97国产精品免费观看| 国产资源在线一区| 欧美日韩卡一卡二| 国产精品久久久久四虎| 男女男精品网站| 欧美一a一片一级一片| 国产欧美精品一区二区三区四区| 亚洲色图都市小说| 加勒比av一区二区| 欧美另类变人与禽xxxxx| 国产精品成人免费| 国产精品一区二区在线看| 欧美福利电影网| 一区二区三区四区乱视频| 成人小视频在线观看| 精品第一国产综合精品aⅴ| 亚洲国产一区二区视频| 91蜜桃免费观看视频| 欧美国产精品一区二区三区| 婷婷综合久久一区二区三区| 色综合久久久久久久| 国产精品色一区二区三区| 国产一本一道久久香蕉| 久久综合色8888| 激情综合五月天| 精品女同一区二区| 韩国v欧美v亚洲v日本v| 91精品国产美女浴室洗澡无遮挡| 午夜精品福利一区二区蜜股av | 日韩美女视频一区二区| 成人手机电影网| 国产精品妹子av| 懂色中文一区二区在线播放| 久久综合九色综合久久久精品综合| 日韩精品一卡二卡三卡四卡无卡| 欧美影院精品一区| 亚洲成人综合在线| 欧美一区二区三区电影| 日韩精品亚洲一区二区三区免费| 欧美日产在线观看| 日本人妖一区二区| 91精品久久久久久久91蜜桃| 日韩成人一区二区| 精品国产一区二区亚洲人成毛片| 国内外精品视频| 国产精品女同一区二区三区| 99精品偷自拍| 天天综合日日夜夜精品| 欧美美女bb生活片| 久草热8精品视频在线观看| 精品免费日韩av| 91年精品国产| 亚洲国产人成综合网站| 日韩三级视频在线看| 国产成人综合在线播放| 亚洲欧美日韩中文播放| 欧美精选在线播放| 处破女av一区二区| 国产精品国产三级国产| 91网站最新网址| 美女网站色91| 亚洲视频免费观看| 日韩视频中午一区| 成人黄色片在线观看| 亚洲一二三区视频在线观看| 欧美成人福利视频| 色天使久久综合网天天| 久久99精品国产麻豆婷婷| 中文字幕在线一区| 91精品国产综合久久精品图片 | 在线亚洲免费视频| 久久精品av麻豆的观看方式| 国产精品成人午夜| 日韩一本二本av| 91浏览器入口在线观看| 老司机一区二区| 一区二区三区在线视频观看58| 91精品国产欧美一区二区18| 成人国产视频在线观看| 免费人成网站在线观看欧美高清| 国产精品久久久久久久蜜臀 | 国产精品丝袜久久久久久app| 欧美日韩久久久一区| 波多野结衣欧美| 久久电影国产免费久久电影| 亚洲精品成人精品456| 国产色综合久久| 欧美一区二区精品| 欧美性色aⅴ视频一区日韩精品| 粉嫩一区二区三区在线看| 久久精品国产亚洲一区二区三区| 亚洲一区二区综合| 中文字幕一区二区三区不卡| 欧美精品一区二区三区蜜桃视频| 欧美日本一区二区在线观看| 91老司机福利 在线| av一区二区三区在线| 国产精品99久久久久久似苏梦涵| 日韩av午夜在线观看| 亚洲乱码国产乱码精品精小说| 国产欧美日韩另类视频免费观看| www国产精品av| 精品欧美黑人一区二区三区| 日韩一区二区免费高清| 欧美欧美欧美欧美| 欧美群妇大交群的观看方式| 色狠狠桃花综合| 99久久久国产精品免费蜜臀| 丁香婷婷综合网| 成人一区二区三区| www.欧美.com| 高清国产一区二区| 成人av网站免费观看| 成人理论电影网| 色综合一区二区| 91麻豆成人久久精品二区三区| 91免费视频网| 欧美性猛交xxxx黑人交| 欧美亚洲图片小说| 欧美日韩一区二区欧美激情| 欧美三级三级三级| 91精品啪在线观看国产60岁| 日韩欧美国产wwwww| 亚洲精品在线电影| 欧美激情中文字幕一区二区| 国产女主播一区| 亚洲女同ⅹxx女同tv| 一区二区三区四区激情| 性感美女久久精品| 久热成人在线视频| 成a人片国产精品| 欧美视频自拍偷拍| 欧美精品一区二区三区一线天视频 | 欧美大片一区二区三区| 欧美日产在线观看| 亚洲精品一区二区三区蜜桃下载 | 一区二区三区.www| 日本成人中文字幕| 国产aⅴ综合色| 91久久国产综合久久| 91麻豆精品国产| 中文字幕欧美国产| 亚洲午夜精品久久久久久久久| 日本午夜一区二区| 成人爱爱电影网址| 欧美久久久久久蜜桃| 国产人久久人人人人爽| 一区二区成人在线| 黄色成人免费在线| 欧美午夜精品一区二区蜜桃| 精品免费视频一区二区| 亚洲男人都懂的| 国产又黄又大久久| 欧美亚洲日本一区| 国产精品人人做人人爽人人添| 午夜精品久久久久久| 成人激情黄色小说| 日韩女优视频免费观看| 亚洲欧美日韩国产手机在线| 麻豆91免费看| 欧洲精品中文字幕| 国产欧美日韩在线视频| 午夜电影网亚洲视频| 不卡av在线网| 久久久久久久网| 日韩av中文在线观看| 色婷婷综合激情| 国产精品精品国产色婷婷| 久久精品理论片| 91精品国产综合久久久久久漫画 | 国产在线精品免费| 777久久久精品| 亚洲宅男天堂在线观看无病毒| 国产成人在线看| 精品av久久707| 日本女优在线视频一区二区| 在线观看一区二区精品视频| 国产日韩欧美a| 麻豆成人av在线| 日韩亚洲欧美一区| 亚洲成年人影院| 在线观看一区日韩| 一区二区三区91| 色综合久久综合| 中文字幕欧美一| 成人av资源在线| 国产精品色哟哟网站| 国产成人在线视频播放| 26uuu国产在线精品一区二区| 日日摸夜夜添夜夜添精品视频 | 精品国产一区二区三区久久久蜜月 | 亚洲欧美另类小说| 国产成人福利片| 久久综合国产精品| 国内精品视频一区二区三区八戒| 欧美挠脚心视频网站|