欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

利用按位異或運(yùn)算加密文件(用c語言、c++和vb寫的)-創(chuàng)新互聯(lián)

這是我用來練習(xí)的程序,功能是用密碼加密文件,寫了兩個(gè)版本:第一個(gè)完全用c++寫,練習(xí)類的繼承、操作符重載;第二個(gè)嘗試用c寫dll,vb調(diào)用dll的函數(shù)。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)達(dá)州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
原理

在第一次學(xué)按位異或算符“^”時(shí),我注意到這個(gè)運(yùn)算是可逆的,即(a^b)^b=a,于是就想到可以利用按位異或運(yùn)算將文件加密。后來就寫了加密程序,原理是用特定長度的char類型作為密碼,將文件內(nèi)容與密碼逐字節(jié)異或運(yùn)算,將運(yùn)算結(jié)果寫入另一個(gè)文件,密碼長度不夠就從頭循環(huán)。

c0356b1388ea41cbb4fd9e78203d17a2.png

可以看出,將加密后的文件用相同的密碼再次“加密”后就可以解密。


密碼形式

密碼形式是二進(jìn)制文件“key.bin”。char類型可以放不可打印字符,于是我想到從二進(jìn)制文件中讀取密碼,用16進(jìn)制編輯器編輯二進(jìn)制文件(我用的是flexhexeditor)。二進(jìn)制文件的前4個(gè)字節(jié)是unsigned int型變量,是密碼長度,密碼長度不能太長,我初步定為不超過256字節(jié);從第5個(gè)字節(jié)開始到文件結(jié)尾就是密碼,文件末尾多出一些內(nèi)容也沒關(guān)系。


加密后的文件名

保存的文件文件名,我是直接加一個(gè)擴(kuò)展名“.加密文件”,如果文件本身擴(kuò)展名就是“.加密文件”,就把擴(kuò)展名去掉。


兩個(gè)版本的區(qū)別

c++版是將文件拖動(dòng)到exe程序上打開,程序在工作目錄打開“key.bin”(如果是拖動(dòng)打開或選擇打開方式后雙擊打開,則工作目錄為文件所在目錄)。c和vb版是可以選擇文件,用的是winapi函數(shù)GetOpenFileName。另外c和vb版可以輸入字符串作為密碼,或者從bmp文件產(chǎn)生密碼,是當(dāng)時(shí)考慮各種密碼形式時(shí)的產(chǎn)物。

c++代碼如下,vb和c混合寫的由于有多個(gè)文件,不貼代碼,發(fā)文件:按位異或文件加密,vb

#include#include#include#include//嘗試類繼承的練手作
#define scanlength 65536

class keychar;

class mywords {
	protected:
		unsigned int length;//字節(jié)數(shù)
		char *str;
	public:
		mywords(char * words, int length = 0);
		mywords(int len);
		mywords();
		~mywords();
		int read(std::ifstream &in);//默認(rèn)從文件中讀取length字節(jié)的內(nèi)容 
		int read(std::ifstream &in, int len);//指定讀取的長度
		void write(std::ofstream &out, int len);//將str指向的len字節(jié)內(nèi)容寫入文件
		unsigned int getlength();
		mywords& operator =(mywords& words);
		mywords& operator =(char* words);
		//因?yàn)樽止?jié)數(shù)不一定相等,mywords的按位異或運(yùn)算不滿足交換律
		mywords& operator ^=(keychar& key);
};

class keychar : public mywords {
	public:
		static const int keychar_size = 256;
		void keyread(std::ifstream &in);
		void keywrite(std::ofstream &out);
};

int main(int argc, char *argv[]) {
	int n;
	mywords scan(scanlength); //在一定范圍內(nèi),scanlength越長,速度越快 
	keychar key;
	std::ifstream in, keyin;
	std::ofstream out;
	if (argc >1) {
		//識(shí)別擴(kuò)展名,有".加密文件"則刪,無則追加
		char *file;
		file = strrchr(argv[1], '\\') + 1;//每層文件夾后都有\(zhòng),所以定位到最后一個(gè) 
		char filename[strlen(file) + 64];//預(yù)留一些空間,防止內(nèi)存溢出 
		strcpy(filename, file);
		file = strrchr(filename, '.');//定位到最后一個(gè)'.',就是擴(kuò)展名,“電影.mp4.txt”是純文本文件 
		if (!file || strcmp(file, ".加密文件")) {
			strcpy(filename + strlen(filename), ".加密文件");
		} else {
			*file = '\0';
		}
		//打開文件
		in.open(argv[1], std::ios::binary);
		out.open(filename, std::ios::binary);
		keyin.open("key.bin", std::ios::binary);
		//讀取key文件
		if (keyin) {
			key.keyread(keyin);
			keyin.close();
		}
		//讀取文件并加密保存
		while (!in.eof()) {
			n = scan.read(in);
			scan ^= key;
			scan.write(out,n);
		}
	}
	in.close();
	out.close();
	return 0;
}

mywords::mywords() {
	length = 0;
	str = NULL;
}

mywords::mywords(int len) {
	length = len;
	str = (char*)malloc(length);
}

mywords::mywords(char*words, int length) {
	if (length< 1)length = strlen(words);
	str = (char*)malloc(length);
	for (int i = 0; i< length; i++) {
		str[i] = words[i];
	}
}

mywords::~mywords() {
	if (str)free(str);
}

int mywords::read(std::ifstream &in){
	in.read(str,length);
	return in.gcount();
}

int mywords::read(std::ifstream &in, int len){
	in.read(str,len);
	return in.gcount();
}

void mywords::write(std::ofstream &out, int len){
	out.write(str,len);
}

unsigned int mywords::getlength() {
	return length;
}

mywords& mywords::operator ^=(keychar& key) {
	unsigned int i, j;
	if (key.getlength() >0)
		for (i = j = 0; i< length; i++, j++) {
			if (j >= key.getlength())j -= key.getlength();
			str[i] ^= key.str[j];
		}
	return *this;
}

mywords& mywords::operator =(mywords& words) {
	unsigned int i;
	length = words.length;
	if (str)free(str);
	str = (char *)malloc(length);
	for (i = 0; i< words.length; i++)str[i] = words.str[i];
	return *this;
}

mywords& mywords::operator =(char* words) {
	unsigned int i;
	length = strlen(words);
	if (str)free(str);
	str = (char*)malloc(length);
	for (i = 0; i< length; i++)str[i] = words[i];
	return *this;
}

void keychar::keyread(std::ifstream &in) {
	if (str)free(str);
	length = 0;
	str = NULL;
	in.read((char*)&length, 4);
	if (length >keychar_size)
		length = ((length & 0xff)<< 24) + ((length & 0xff00)<< 8) + ((length & 0xff0000) >>8) + ((length & 0xff000000) >>24);
	if (length >keychar_size) {
		printf("error: key文件格式錯(cuò)誤,不加密(解密)輸出\n");
		system("pause");
	}
	if (length) {
		str = (char*)malloc(length);
		in.read(str, length);
	}
}

void keychar::keywrite(std::ofstream &out) {
	out.write((char*)&length, 4);
	if (length)out.write(str, length);
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁名稱:利用按位異或運(yùn)算加密文件(用c語言、c++和vb寫的)-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://aaarwkj.com/article22/dgoscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、商城網(wǎng)站、微信小程序、靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
丝袜美腿诱惑国产在线| 一本久道久久综合久久鬼色| 欧美午夜国产在线观看| 日韩高清伦理一区二区| 亚洲天堂av在线播放| 成人免费大片在线观看视频| av熟妇人妻一区二区三区| 亚洲中文永久免费视频| 亚洲三级黄片在线观看| 精品福利视频蜜臀91| 欧美性生活在线视频观看| 在线看日本十八禁网站| 亚洲综合色一区二区三区四区| 欧美日韩国产精品一区二区在线观看| 一区二区三区欧美日韩| 91薄丝激情在线播放| 日本大胆高清人体艺术| 丝袜美腿蜜汁一龙二凤| 日韩人妻中文字幕乱码一区| 日韩一区二区三区四区精品| 中文字幕日韩欧美一区| 亚洲精品免费一区二区三区| 亚洲福利一区二区在线| 久久国产福利一区二区| 日本一区二区欧美在线| 声入人心第一季在线观看| 日本顶级片一区二区三区| 欧美日本国产专区一区| 欧美日韩美足一区二区| 成人免费在线国产视频| 日本不卡不码高清免费| 日本不卡一区二区在线观看| 国产日韩欧美一区综合| 日韩一区二区人妻在线| 怡红院一区二区三区毛片| 亚洲精品在线观看日本| 亚洲国产99在线精品一区| 国产精品久久一国产精品| 日韩av一区二区久久久| 先锋影音女同中文字幕 | 亚洲精品丝袜成人偷拍|