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

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

?? main.cpp

?? DSM Plugin.加密文件
?? CPP
字號:
//  Copyright (C) 2005 Sean E. Covel All Rights Reserved.
//
//  Created by Sean E. Covel
//
//
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
//  USA.
//
// If the source code for the program is not available from the place from
// which you received this file, check 
// http://home.comcast.net/~msrc4plugin
// or
// mail: msrc4plugin@comcast.net
//
//
//
/////////////////////////////////////////////////////////////////////////////


#include "stdafx.h"
#define _WIN32_WINNT 0x0400

#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <wincrypt.h>       //windows crypto api
#include "main.h"
#include "logging.h"
//#include "MSRC4Plugin.h"
#include "crypto.h"
#include "utils.h"

int arProv[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int iProv;
int MAX_Prov = 20;
char arCSP[][73] = {NULL,MS_DEF_PROV,MS_ENHANCED_PROV,MS_DEF_RSA_SIG_PROV,MS_DEF_RSA_SCHANNEL_PROV,MS_ENHANCED_RSA_SCHANNEL_PROV,MS_DEF_DSS_PROV,MS_DEF_DSS_DH_PROV  };
int MAX_CSP = 6;

#define MAX_LEN 256

char sDefaultGenKey[MAX_LEN];
long iWinVer=0;
long iCryptVer=0;

//char * logFile = "crypto.log";     //need to fix this...someday...

#define CRYPTO_DESCRIPTION  "crypto.exe, Mar 11 2005, Version 1.1.6"

int main(int argc, char* argv[])
{

if (argc >= 2) {


	LOGIT = false;

	PrintLog((DEST,"%s",WindowsName[WhatWindowsVer()]));
	WinVer();

	InitVars(CSP_NAME, &iWinVer, &iCryptVer, &MAXKEYLEN);

	if (WhatWindowsVer() >= WINXP)
		CSP_NAME[0] = '\0';
	else
		strcpy(CSP_NAME,MS_ENHANCED_PROV);

	DebugLog((DEST,"CSP=%s WinVer=%d CryptVer=%d MaxKeyLen=%d",CSP_NAME, iWinVer, iCryptVer, MAXKEYLEN));

	iProv = arProv[iProv];

	switch(argv[1][1])   // second character of the first parameter -e = 'e'
	{
	case 'e':
		Encrypt(argv[2],argv[3], argv[4]);
		break;
	case 'd':
		Decrypt(argv[2],argv[3], argv[4]);
		break;
	case 'k':
		CreateKey(argv[2], MAXKEYLEN);
		break;
	case 'l':
		ListProviders();
		break;
	case 'x':
		WriteDebugInfo();
		break;
	case 'v':
		Version();
		break;
	case 'r':
		LOGIT = true;
		DEBUGIT = true;
		if (argc == 3)
			DeleteContainer(argv[2]);
		else
			DeleteContainer(CTX);
		LOGIT = false;
		DEBUGIT = false;
		break;
	case 'c':
		LOGIT = true;
		DEBUGIT = true;
		if (argc == 3)
			CreateContainer(argv[2]);
		else
			CreateContainer(CTX);
		LOGIT = false;
		DEBUGIT = false;
		break;
	default:
		Usage();
		break;
	}
}
else
	Usage();

return(0);

}



int ListProviders (){
int i;
unsigned long cbName;
long iVer;
long rc = 0;
LOGIT = true;

iVer = GetCryptoVersion();
cbName = 100;

//PrintLog((DEST,"Default Provider %s",cspName));
PrintLog((DEST,"Crypto Version %d ",iVer));

//Windows OS before 2000 won't import ExponentOfOne key in a verify context.
if (iWinVer > WIN2000)
{
	CONTEXT_FLAG = VERIFY_CONTEXT_FLAG;
	szUserName[0] = '\0';
}
else
{
	CONTEXT_FLAG = NULL_CONTEXT_FLAG;
	strcpy(szUserName, CTX);
	CreateContainer(szUserName);
}

for (i=0;i<=MAX_CSP;i++) {

		strcpy(CSP_NAME,arCSP[i]);
	
	for (iProv=1;iProv<=MAX_Prov;iProv++) {

		PrintLog((DEST,"\r\n\r\nListing Provider '%s' %d ",CSP_NAME,arProv[iProv]));
		//printf("\r\n\r\nListing Provider %d\r\n",arProv[iProv]);
		unsigned long cbData;
		PROV_ENUMALGS_EX EnumAlgs;     //   Structure to hold information on 
		PROV_ENUMALGS EnumAlgsOld;     //   Structure to hold information on 
									   //   a supported algorithm
		DWORD dFlag = CRYPT_FIRST;     //   Flag indicating that the first
									   //   supported algorithm is to be
									   //   enumerated. Changed to 0 after the
									   //   first call to the function.
		HCRYPTPROV    hProvider = 0;

		//PrintLog((DEST,"Creating the Container "));
		//CreateContainer();

		PrintLog((DEST,"Acquiring the Crypto Context "));
		// Get handle for the default provider (use RSA encryption).
		PrintLog((DEST,"CryptAcquireContext |%d| |%s| |%s| |%d| |%d|",hProvider, szUserName, CSP_NAME, arProv[iProv], CONTEXT_FLAG));
		rc = CryptAcquireContext(&hProvider, szUserName, CSP_NAME,  arProv[iProv], CONTEXT_FLAG);
		if (rc == FALSE)
		{
			PrintLog((DEST,"CryptAcquireContext |%d| |%s| |%s| |%d| |%d|",hProvider, szUserName, CSP_NAME, arProv[iProv], 0));
			rc = CryptAcquireContext(&hProvider, szUserName, CSP_NAME,  arProv[iProv], 0);
		}
		if (hProvider == 0){
				PrintLog((DEST,"Crypto could not acquire a Crypto Provider Context. "));
				continue;
		}
		else {

			cbData = sizeof(PROV_ENUMALGS_EX);

			if (CSP_NAME[0] == '\0')
			{
				printf("\r\nListing Provider 'Default' %d\r\n",arProv[iProv]);
				DebugLog((DEST,"\r\nListing Provider 'Default' %d\r\n",arProv[iProv]));
			}
			else
			{
				printf("\r\nListing Provider '%s' %d\r\n",CSP_NAME,arProv[iProv]);
				DebugLog((DEST,"\r\nListing Provider '%s' %d\r\n",CSP_NAME,arProv[iProv]));
			}

			PrintLog((DEST,"Listing Providers '%s' %d ",CSP_NAME,arProv[iProv]));
			printf("%-20.20s %-16.16s %-10.10s %-10.10s\r\n", "Algorithm Name", "Default Key len" , "Min len", "Max len"  );
			DebugLog((DEST,"%-20.20s %-16.16s %-10.10s %-10.10s\r\n", "Algorithm Name", "Default Key len" , "Min len", "Max len"  ));

 		    //DWORD dFlag = CRYPT_FIRST;     //   Flag indicating that the first
			if (iVer == 2)
			while( CryptGetProvParam(
				hProvider,          // handle to an open cryptographic provider
				PP_ENUMALGS_EX, 
				(BYTE *)&EnumAlgs,  // information on the next algorithm
				&cbData,            // number of bytes in the PROV_ENUMALGS_EX
				dFlag))             // flag to indicate whether this is a first or
									// subsequent algorithm supported by the
									// CSP.
			{
				printf("%-20.20s %-16d %-10d %-10d\r\n", EnumAlgs.szName  , EnumAlgs.dwDefaultLen , EnumAlgs.dwMinLen, EnumAlgs.dwMaxLen  );
				PrintLog((DEST,"%-20.20s %-16d %-10d %-10d", EnumAlgs.szName  , EnumAlgs.dwDefaultLen , EnumAlgs.dwMinLen, EnumAlgs.dwMaxLen  ));
				dFlag = 0;          // Set to 0 after the first call,
			} //  end of while loop. When all of the supported algorithms have
			  //  been enumerated, the function returns FALSE.
			else
			while( CryptGetProvParam(
				hProvider,          // handle to an open cryptographic provider
				PP_ENUMALGS, 
				(BYTE *)&EnumAlgsOld,  // information on the next algorithm
				&cbData,            // number of bytes in the PROV_ENUMALGS_EX
				dFlag))             // flag to indicate whether this is a first or
									// subsequent algorithm supported by the
									// CSP.
			{
				printf("%-20.20s %-16d \r\n", EnumAlgsOld.szName  , EnumAlgsOld.dwBitLen );
				PrintLog((DEST,"%-20.20s %-16d ", EnumAlgsOld.szName  , EnumAlgsOld.dwBitLen ));
				dFlag = 0;          // Set to 0 after the first call,
			} //  end of while loop. When all of the supported algorithms have
			  //  been enumerated, the function returns FALSE.

				PrintLog((DEST,"Completed listing Providers "));

				PrintLog((DEST,"Releasing the Crypto context "));
			   CryptReleaseContext(hProvider, 0);

			}
		}
	}
	return (0);

}


void Usage(){

printf("\n\nUsage: crypto -h" \
	   "\n\nList Crypto providers: crypto -l" \
	   "\n\nGenerate Key: crypto -k [keyfile]" \
	   "\n\nEncrypt File: crypto -e [infile] [outfile] [keyfile]" \
	   "\n\nDecrypt File: crypto -d [infile] [outfile] [keyfile]" \
	   "\n\nDebug Info (crypto.log): crypto -x" \
	   "\n\nRemove key container: crypto -r <optional container name>" \
	   "\n\nCreate key container: crypto -c <optional container name>" \
	   "\n\nVersion: crypto -v" \
	   "\n\n");

}


void Version(){

printf("\n\n%s\n\n", CRYPTO_DESCRIPTION);

}

int CreateKey(char * keyFile, DWORD keyLen) {

strncpy(sDefaultGenKey,keyFile, MAX_LEN);

GenKey(keyFile, keyLen);

return 0;

}



int Encrypt(char * inFile, char * outFile, char * keyFile) {	
	const IN_BUFFER_SIZE    = 2048;
	const OUT_BUFFER_SIZE   = IN_BUFFER_SIZE + 64; // extra padding
	HANDLE     hInFile; 
	HANDLE     hOutFile;
	HANDLE	   hKeyFile;
    BYTE       pbBuffer[OUT_BUFFER_SIZE];
	BOOL          finished;
    HCRYPTPROV    hProvider = 0;
    HCRYPTKEY     hKey = 0, hExchangeKey = 0;
    DWORD         dwByteCount, dwBytesWritten;
	long	rc=0;


     // Open infile and create outfile.
     hInFile = CreateFile(inFile, GENERIC_READ, FILE_SHARE_READ, 
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
     hOutFile = CreateFile(outFile, GENERIC_WRITE, FILE_SHARE_READ, 
         NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);


		DebugLog((DEST,"PrepContext"));
	 PrepContext(iWinVer, &hProvider);

     hKeyFile = CreateFile(keyFile, GENERIC_READ, FILE_SHARE_READ, 
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	

	DebugLog((DEST,"ImportCryptKey"));
	ImportCryptKey(hProvider, &hKey, hKeyFile);

DWORD	dwCount = 11;
BYTE pbIV[11];

//CryptGenRandom(hProvider, dwCount, pbIV);

strcpy((char *)pbIV,"12345678901");

if(!CryptSetKeyParam(hKey, KP_SALT, pbIV, 0)) {
    printf("Error %x during CryptGetKeyParam!\n", GetLastError());
    return 1;
}

 
  // Now, read data in, encrypt it, and write encrypted data to output.
          do 
          {
               ReadFile(hInFile, pbBuffer, IN_BUFFER_SIZE,&dwByteCount,NULL);
               finished = (dwByteCount < IN_BUFFER_SIZE);
               rc = CryptEncrypt(hKey, 0, finished, 0, pbBuffer, &dwByteCount,  
                         OUT_BUFFER_SIZE);
				PrintLog((DEST,"Finished = %d ",finished));
               WriteFile(hOutFile, pbBuffer, dwByteCount, &dwBytesWritten,
                         NULL);
          } while (!finished);

   //And we抮e finished
   //almost. All we need to do now is clean up. We抮e finished with both keys at this point, so let抯 delete them.

   // Clean up: release handles, close files.
	CleanupCryptoKey(hExchangeKey);
    CleanupCryptoKey(hKey);
   //We抮e finished using the CSP handle, so we must release it. We close the input and output files, and we抮e finished.

   CleanupCryptoContext(hProvider);
   CloseHandle(hInFile);
   CloseHandle(hOutFile);
   return (0);
}


int Decrypt(char * inFile, char * outFile, char * keyFile) {	

// note: the IN_BUFFER_SIZE used here is purposely an even multiple of the
// various possible encryption block sizes, namely 1, 8, and 64 bytes.
const IN_BUFFER_SIZE    = 64 * 100; // needs to be multiple of block size.

	HANDLE      hInFile; 
	HANDLE		hOutFile;
	HANDLE		hKeyFile;
     BYTE        pbBuffer[IN_BUFFER_SIZE];
     BOOL        finished;
     HCRYPTPROV  hProvider = 0;
    HCRYPTKEY     hKey = 0, hExchangeKey = 0;
     DWORD       dwByteCount, dwBytesWritten;

	 //As in the Encrypt demo, we first need to get a handle to the default CSP.

     // Get handle for the default provider (use RSA encryption).
		DebugLog((DEST,"PrepContext"));
	 PrepContext(iWinVer, &hProvider);

     // Open infile and create outfile.
     hInFile = CreateFile(inFile, GENERIC_READ, FILE_SHARE_READ, 
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
     hKeyFile = CreateFile(keyFile, GENERIC_READ, FILE_SHARE_READ, 
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
     hOutFile = CreateFile(outFile, GENERIC_WRITE, FILE_SHARE_READ, 
         NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

//We now read in, in the same order as they were written, the key blob size and then the key blob itself. 

   // Import Key blob into "CSP"
	DebugLog((DEST,"ImportCryptKey"));
	ImportCryptKey(hProvider, &hKey, hKeyFile);

DWORD	dwCount = 11;
BYTE pbIV[11];

//CryptGenRandom(hProvider, dwCount, pbIV);

strcpy((char *)pbIV,"12345678901");

if(!CryptSetKeyParam(hKey, KP_SALT, pbIV, 0)) {
    printf("Error %x during CryptGetKeyParam!\n", GetLastError());
    return 1;
}

//Next, we read encrypted data in, decrypt it using CryptDecrypt, and write the decrypted data to our output file. Like the CryptEncrypt function, CryptDecrypt takes a 揻inished

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久九九全国免费| 91国偷自产一区二区开放时间| 国产精品视频线看| 欧美日韩国产影片| 国产成人午夜视频| 日韩国产精品久久| 国产精品天美传媒沈樵| 日韩视频在线你懂得| 91高清视频免费看| 国产成人超碰人人澡人人澡| 视频一区欧美日韩| 亚洲精品视频在线看| 久久先锋影音av| 在线播放/欧美激情| 91婷婷韩国欧美一区二区| 精品一区二区综合| 天天免费综合色| 亚洲欧美日韩电影| 国产精品嫩草影院av蜜臀| 欧美tickling网站挠脚心| 欧美日韩在线播放一区| 99久久99久久免费精品蜜臀| 岛国一区二区三区| 国产在线观看一区二区| 九九视频精品免费| 日韩激情中文字幕| 亚洲成人三级小说| 亚洲欧美日韩小说| 成人欧美一区二区三区小说 | 国产精品久久久久影院亚瑟| 精品精品国产高清a毛片牛牛 | 国产精品欧美极品| 国产偷国产偷精品高清尤物| 精品日韩av一区二区| 日韩一区二区电影| 欧美精品tushy高清| 欧美日韩午夜影院| 欧美变态tickling挠脚心| 91精品国产91久久久久久一区二区 | 国产精品久久久久久久久图文区 | 亚洲国产精品黑人久久久| 国产成人av自拍| 亚洲午夜日本在线观看| 久久久久免费观看| 欧美日韩视频一区二区| 国产尤物一区二区| 午夜伊人狠狠久久| 国产精品久久久久久久久动漫| 欧美日韩在线不卡| 懂色一区二区三区免费观看| 国模冰冰炮一区二区| 日韩理论片在线| 2020国产精品自拍| 午夜久久电影网| 在线亚洲精品福利网址导航| 国产精品中文字幕日韩精品| 国产在线精品不卡| 日韩精品一区二区三区中文不卡 | 国产精品麻豆久久久| 中文字幕永久在线不卡| 中文字幕视频一区二区三区久| 国产精品国产a| 亚洲精品免费在线播放| 日韩欧美激情在线| 欧美日本一区二区| 欧美日本免费一区二区三区| 色婷婷av一区二区三区之一色屋| 粉嫩绯色av一区二区在线观看| 一区二区三区加勒比av| 中文一区在线播放| 国产目拍亚洲精品99久久精品| 日韩小视频在线观看专区| 日韩高清在线一区| 欧美人动与zoxxxx乱| 亚洲一区在线观看免费| 性久久久久久久久| 卡一卡二国产精品| 成人美女视频在线观看18| eeuss鲁一区二区三区| 精品一区二区三区免费视频| 三级亚洲高清视频| 国产精品亚洲一区二区三区妖精 | 久久99久久99精品免视看婷婷| 国产一区二区三区免费播放| 91香蕉视频mp4| 亚洲精品乱码久久久久久日本蜜臀| 亚洲激情男女视频| 日本成人在线电影网| 91色porny蝌蚪| 国产福利精品导航| 成人精品亚洲人成在线| 26uuu欧美| 国产一区二区三区蝌蚪| 91色.com| 久久久久久久久久电影| 亚洲欧美日韩在线| 久久99蜜桃精品| 色悠悠久久综合| 久久欧美一区二区| 国产农村妇女毛片精品久久麻豆 | 国产精品一区不卡| 成人深夜在线观看| 欧美一区二区网站| 亚洲美女在线国产| 国产激情91久久精品导航| 欧美日韩另类国产亚洲欧美一级| 国产欧美一区二区精品性色超碰| 亚洲第一av色| 欧美一区二区私人影院日本| 国产精品美女一区二区| 久久99精品国产麻豆婷婷| 欧美综合欧美视频| 国产日产欧美一区| 蜜桃精品视频在线| 欧美日韩一二三区| 国产精品久久久久永久免费观看| 久久国产成人午夜av影院| 欧美日韩三级在线| 一区二区三区免费网站| 成熟亚洲日本毛茸茸凸凹| 精品国产一区二区国模嫣然| 日韩精品一级中文字幕精品视频免费观看 | 精品剧情在线观看| 国产精品久线观看视频| 色综合婷婷久久| 国产精品国产三级国产aⅴ无密码| 美女视频网站久久| 日韩欧美一区中文| 日韩午夜激情免费电影| 精品国产第一区二区三区观看体验| 亚洲综合免费观看高清完整版在线| 高清不卡在线观看av| 欧美精品一区视频| 麻豆精品精品国产自在97香蕉| 欧美日韩成人综合| 五月天精品一区二区三区| 欧美少妇性性性| 一区二区激情视频| 欧美主播一区二区三区美女| 欧美浪妇xxxx高跟鞋交| 国产一区二区在线看| 国产精品丝袜91| 在线日韩av片| 视频一区国产视频| 中文字幕一区二区在线播放 | 色88888久久久久久影院按摩| 精品久久久久久最新网址| 久久综合九色综合欧美就去吻| 日本电影欧美片| 一本大道av伊人久久综合| 亚洲1区2区3区视频| 国产精品美女久久久久久久久| 亚洲精品日产精品乱码不卡| 亚洲国产精品久久人人爱| 亚洲综合一区二区| 亚洲天堂2016| 一片黄亚洲嫩模| 亚洲国产视频直播| 最新中文字幕一区二区三区| 欧美一卡二卡三卡| 在线视频欧美精品| 一本色道久久综合精品竹菊| 丁香亚洲综合激情啪啪综合| 性欧美疯狂xxxxbbbb| 国产欧美综合在线观看第十页| 精品国产第一区二区三区观看体验 | 亚洲国产精品影院| 亚洲国产视频一区二区| 亚洲gay无套男同| 久久国产尿小便嘘嘘尿| 国产91丝袜在线观看| 成人在线综合网站| 欧美亚洲综合网| 在线观看日产精品| 在线中文字幕一区二区| 99久久国产免费看| 欧美午夜精品久久久| 欧美一级一区二区| 7799精品视频| 久久天天做天天爱综合色| 国产精品色婷婷久久58| 国产精品久久夜| 午夜精品免费在线观看| 麻豆视频观看网址久久| 极品销魂美女一区二区三区| 久久福利视频一区二区| 午夜成人免费视频| 国产精品小仙女| 99精品国产视频| 欧美日韩精品一二三区| 亚洲三级在线看| 成人午夜av影视| 欧美日韩在线播放三区| 亚洲美女屁股眼交3| 国产真实乱对白精彩久久| 91尤物视频在线观看| 欧美videossexotv100| 一区在线观看免费| 精品一区二区三区免费观看| 91精品国产欧美一区二区|