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

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

?? qqhash.cpp

?? QQ自動登陸器, 同時支持TM, 利用QQ可以從命令行接收參數登陸的特點制做, 源碼中有QQ密碼加密的完整算法, 開發環境, VC++6.0
?? CPP
字號:

/*
	Copyright 2006 - 2008, All Rights Reserved.
							
	QQ密碼加密算法實現

	作者	- 張魯奪(zhangluduo)
	MSN		- zhangluduo@msn.com
	QQ群	- 34064264

	為所有愛我的人和我愛的人努力!
*/

#include "stdafx.h"
#include "QQHash.h"

QQHash::QQHash()
{

}

QQHash::~QQHash()
{

}

string QQHash::Hex2Bin(const string strHex)
{
	string strBinValue;
	for(int i = 0 ; i < strHex.length(); i++)
	{
		switch(strHex[i])
		{
		case '0':
			strBinValue += "0000";
			break;         
		case '1':        
			strBinValue += "0001";
			break;         
		case '2':        
			strBinValue += "0010";
			break;         
		case '3':        
			strBinValue += "0011";
			break;         
		case '4':        
			strBinValue += "0100";
			break;         
		case '5':        
			strBinValue += "0101";
			break;         
		case '6':        
			strBinValue += "0110";
			break;         
		case '7':        
			strBinValue += "0111";
			break;         
		case '8':        
			strBinValue += "1000";
			break;         
		case '9':        
			strBinValue += "1001";
			break;         
		case 'a':        
			strBinValue += "1010";
			break;         
		case 'b':        
			strBinValue += "1011";
			break;         
		case 'c':        
			strBinValue += "1100";
			break;         
		case 'd':        
			strBinValue += "1101";
			break;         
		case 'e':        
			strBinValue += "1110";
			break;         
		case 'f':        
			strBinValue += "1111";
			break;         
		case 'A':        
			strBinValue += "1010";
			break;         
		case 'B':        
			strBinValue += "1011";
			break;         
		case 'C':        
			strBinValue += "1100";
			break;         
		case 'D':        
			strBinValue += "1101";
			break;         
		case 'E':        
			strBinValue += "1110";
			break;         
		case 'F':        
			strBinValue += "1111";
			break;
		};
	}
	return strBinValue;
}

string QQHash::Bin2Hex(const string strBin4)
{
	if(strBin4.length() != 4) 
		return "";

	if(strBin4 == "0000")
		return "0";
	if(strBin4 == "0001")
		return "1";
	if(strBin4 == "0010")
		return "2";
	if(strBin4 == "0011")
		return "3";
	if(strBin4 == "0100")
		return "4";
	if(strBin4 == "0101")
		return "5";
	if(strBin4 == "0110")
		return "6";
	if(strBin4 == "0111")
		return "7";
	if(strBin4 == "1000")
		return "8";
	if(strBin4 == "1001")
		return "9";
	if(strBin4 == "1010")
		return "A";
	if(strBin4 == "1011")
		return "B";
	if(strBin4 == "1100")
		return "C";
	if(strBin4 == "1101")
		return "D";
	if(strBin4 == "1110")
		return "E";
	if(strBin4 == "1111")
		return "F";
	return "";
}

string QQHash::FindFromTable(const string strHex2)
{
	if(strHex2  == "00")
		return "A";
	if(strHex2 == "01")
		return "B";
	if(strHex2 == "02")
		return "C";
	if(strHex2 == "03")
		return "D";
	if(strHex2 == "04")
		return "E";
	if(strHex2 == "05")
		return "F";
	if(strHex2 == "06")
		return "G";
	if(strHex2 == "07")
		return "H";
	if(strHex2 == "08")
		return "I";
	if(strHex2 == "09")
		return "J";
	if(strHex2 == "0A")
		return "K";
	if(strHex2 == "0B")
		return "L";
	if(strHex2 == "0C")
		return "M";
	if(strHex2 == "0D")
		return "N";
	if(strHex2 == "0E")
		return "O";
	if(strHex2 == "0F")
		return "P";
	if(strHex2 == "10")
		return "Q";
	if(strHex2 == "11")
		return "R";
	if(strHex2 == "12")
		return "S";
	if(strHex2 == "13")
		return "T";
	if(strHex2 == "14")
		return "U";
	if(strHex2 == "15")
		return "V";
	if(strHex2 == "16")
		return "W";
	if(strHex2 == "17")
		return "X";
	if(strHex2 == "18")
		return "Y";
	if(strHex2 == "19")
		return "Z";
	if(strHex2 == "1A")
		return "a";
	if(strHex2 == "1B")
		return "b";
	if(strHex2 == "1C")
		return "c";
	if(strHex2 == "1D")
		return "d";
	if(strHex2 == "1E")
		return "e";
	if(strHex2 == "1F")
		return "f";
	if(strHex2 == "20")
		return "g";
	if(strHex2 == "21")
		return "h";
	if(strHex2 == "22")
		return "i";
	if(strHex2 == "23")
		return "j";
	if(strHex2 == "24")
		return "k";
	if(strHex2 == "25")
		return "l";
	if(strHex2 == "26")
		return "m";
	if(strHex2 == "27")
		return "n";
	if(strHex2 == "28")
		return "o";
	if(strHex2 == "29")
		return "p";
	if(strHex2 == "2A")
		return "q";
	if(strHex2 == "2B")
		return "r";
	if(strHex2 == "2C")
		return "s";
	if(strHex2 == "2D")
		return "t";
	if(strHex2 == "2E")
		return "u";
	if(strHex2 == "2F")
		return "v";
	if(strHex2 == "30")
		return "w";
	if(strHex2 == "31")
		return "x";
	if(strHex2 == "32")
		return "y";
	if(strHex2 == "33")
		return "z";
	if(strHex2 == "34")
		return "0";
	if(strHex2 == "35")
		return "1";
	if(strHex2 == "36")
		return "2";
	if(strHex2 == "37")
		return "3";
	if(strHex2 == "38")
		return "4";
	if(strHex2 == "39")
		return "5";
	if(strHex2 == "3A")
		return "6";
	if(strHex2 == "3B")
		return "7";
	if(strHex2 == "3C")
		return "8";
	if(strHex2 == "3D")
		return "9";
	if(strHex2 == "3E")
		return "+";
	if(strHex2 == "3F")
		return "/";
	return "";
}

string QQHash::GetHash(const string strPassword)
{
	string strResult = "";

	//首先將原密碼進行MD5加密

	MD5 md5;
	MD5::MD5_CTX context;
	unsigned char digest[16];
	string strMD5;

	md5.MD5Init		(&context);	
	md5.MD5Update	(&context, (unsigned char *)strPassword.c_str(), strPassword.length());
	md5.MD5Final	(digest, &context);

	for(int i = 0 ; i < 16; i++)
	{
		char buf[3] = {0};
		sprintf(buf, "%.2X", digest[i]);
		strMD5 += buf;
	}

	//將32個十六進制字母分成12個一組,12個一組,8個一組 
	string strHex[]=
	{
		strMD5.substr(0,12),
		strMD5.substr(12,12),
		strMD5.substr(24,8)
	};

	string strBin = "";
	for(int i = 0 ; i < 3; i++)
	{
		//將拆分的十六進制數組轉為二進制
		strBin=Hex2Bin(strHex[i]);
		
		//將二進制串以6位拆分為一組,在前面補兩個0,不足八位的在后面以0補齊
		string strBinArray[8] = {""};
		int Count = -1;
		for(int j = 0 ; j < strBin.length() ; j += 6)
		{
			Count++;
			strBinArray[Count] = strBin.substr(j, 6);
			strBinArray[Count] = "00" + strBinArray[Count];
			string strPad;
			for(int k = 0 ; k < 8 - (strBinArray[Count].length()) ; k++)
				strPad += "0";
			strBinArray[Count] += strPad;
		}

		//以十六位形成一個新數組
		string strNewArray[4];
		strNewArray[0] = strBinArray[0] + strBinArray[1];
		strNewArray[1] = strBinArray[2] + strBinArray[3];
		strNewArray[2] = strBinArray[4] + strBinArray[5];
		strNewArray[3] = strBinArray[6].empty() ? "" : strBinArray[6] + strBinArray[7];
		
		//將二進制轉為臨時十六進制,以便用這個十六進制進行查表
		string strTmpHex = "";
		for(int i = 0 ; i < 4 ; i++)
		{
			for(int j = 0 ; j < 4 ; j++)
			{
				if(!strNewArray[i].empty())
				strTmpHex += Bin2Hex(strNewArray[i].substr(j * 4, 4));
			}
		}

		//利用上面得到的十六進制串查表
		for(int i = 0 ; i < strTmpHex.length() ; i += 2)
		{
			strResult += FindFromTable(strTmpHex.substr(i, 2));
		}
	}
	return strResult + "==";
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女被调教视频大全网站| |精品福利一区二区三区| 欧美电视剧免费全集观看| 久久免费电影网| 亚洲制服丝袜在线| 久久国产精品72免费观看| 丁香六月久久综合狠狠色| 欧美一区二区三区视频| 亚洲欧美日韩国产综合| 国产麻豆成人传媒免费观看| 欧美日韩成人综合天天影院| 国产精品国产自产拍高清av王其 | 99re成人在线| 日韩一区二区三| 亚洲综合成人网| 成人app下载| 久久色.com| 久久精品国产亚洲aⅴ| 欧美巨大另类极品videosbest | 日韩欧美一区二区久久婷婷| 亚洲精品国产成人久久av盗摄 | 欧美日本一区二区三区四区| 亚洲欧洲日韩一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 欧美另类videos死尸| 一区二区成人在线观看| 91在线免费看| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美视频第二页| 亚洲免费伊人电影| k8久久久一区二区三区| 中文字幕av在线一区二区三区| 精一区二区三区| 日韩精品一区在线观看| 蜜桃久久av一区| 精品88久久久久88久久久| 麻豆精品久久精品色综合| 91麻豆精品国产91久久久使用方法 | 日韩欧美精品在线| 免费av网站大全久久| 日韩精品专区在线影院重磅| 久久精品理论片| 国产日韩三级在线| 丁香婷婷综合色啪| 一区精品在线播放| 欧美性猛交xxxxxxxx| 午夜精品在线视频一区| 欧美电影在线免费观看| 水野朝阳av一区二区三区| 91精品国产综合久久精品性色| 麻豆精品久久久| 久久久精品人体av艺术| 成人av小说网| 亚洲激情男女视频| 欧美精品久久久久久久多人混战 | 日韩av二区在线播放| 精品播放一区二区| 成人手机在线视频| 一区二区成人在线观看| 日韩免费电影网站| 成人免费视频caoporn| 亚洲精品乱码久久久久久久久 | 欧美人与z0zoxxxx视频| 日本欧美肥老太交大片| 久久久久99精品国产片| 一本到不卡免费一区二区| 日韩不卡一区二区| 中文字幕av一区二区三区高| 色久综合一二码| 另类小说欧美激情| 亚洲私人影院在线观看| 91精品在线免费| 白白色 亚洲乱淫| 免费在线观看一区| 亚洲图片你懂的| 欧美一区二区三区免费| 粉嫩一区二区三区在线看| 亚洲电影第三页| 日本一区二区三区电影| 制服视频三区第一页精品| 成人精品视频一区二区三区| 日日夜夜精品视频免费| 国产精品日日摸夜夜摸av| 欧美福利视频导航| 一本一道综合狠狠老| 国产真实乱子伦精品视频| 亚洲妇熟xx妇色黄| 亚洲图片激情小说| 国产亚洲自拍一区| 91精品国产高清一区二区三区| 91在线视频在线| 国产91在线观看丝袜| 日本v片在线高清不卡在线观看| 亚洲色图制服丝袜| 久久婷婷久久一区二区三区| 69堂精品视频| 欧美日韩三级视频| 91精品办公室少妇高潮对白| 国产精品一区二区在线观看不卡| 亚洲成人综合网站| 亚洲免费观看在线视频| 中文字幕第一区二区| 精品剧情v国产在线观看在线| 欧美色图一区二区三区| 国产成人日日夜夜| 国产一区二区三区不卡在线观看 | 亚洲精品在线电影| 日韩欧美一区电影| 欧美一二三在线| 欧美日韩国产另类一区| 欧美亚洲综合在线| 欧美三级电影精品| 91在线看国产| voyeur盗摄精品| proumb性欧美在线观看| 不卡av电影在线播放| 国产成人免费av在线| 国产最新精品精品你懂的| 国产综合色在线| 国产不卡视频一区| 成人爱爱电影网址| 91免费看视频| 欧美日韩另类国产亚洲欧美一级| 欧美亚洲国产bt| 欧美一区二视频| 欧美成人精精品一区二区频| 久久亚区不卡日本| 国产精品亲子乱子伦xxxx裸| 国产精品美女久久久久久2018| 中文字幕欧美激情| 亚洲色图视频免费播放| 亚洲综合在线五月| 午夜精品一区二区三区电影天堂| 日本一不卡视频| 黑人巨大精品欧美一区| 成人性生交大片免费看在线播放| 北条麻妃国产九九精品视频| 欧洲另类一二三四区| 欧美精品色综合| 久久久久88色偷偷免费| 亚洲欧美一区二区久久| 美洲天堂一区二卡三卡四卡视频| 国内不卡的二区三区中文字幕 | 88在线观看91蜜桃国自产| 日韩欧美国产精品| 国产精品久久久一本精品| 亚洲综合丝袜美腿| 九九精品一区二区| 91视视频在线观看入口直接观看www| 日本韩国欧美在线| 日韩一级二级三级| 中文字幕国产精品一区二区| 一区二区三区日韩欧美精品| 美日韩一区二区| 99精品国产热久久91蜜凸| 678五月天丁香亚洲综合网| 欧美国产一区二区在线观看| 亚洲国产精品久久久男人的天堂| 国模娜娜一区二区三区| 欧美私人免费视频| 久久久久久亚洲综合| 亚洲成人在线网站| av一二三不卡影片| 欧美精品自拍偷拍动漫精品| 久久久国产精品麻豆| 亚洲综合一二区| 成人精品国产一区二区4080| 欧美三级日韩在线| 亚洲欧美在线另类| 国产麻豆精品95视频| 欧美一区二区三区日韩视频| 亚洲精品你懂的| 丁香一区二区三区| 久久嫩草精品久久久精品| 五月天激情综合| 色吧成人激情小说| 国产欧美一区二区三区在线看蜜臀 | 一区二区三区在线免费视频| 国产一区二区电影| 日韩一区二区在线免费观看| 亚洲日穴在线视频| 国产成人精品一区二区三区四区 | 国产精品福利影院| 国产乱码精品一区二区三区av| 91精品午夜视频| 亚洲国产精品综合小说图片区| 91在线观看地址| 国产精品欧美经典| 国产.欧美.日韩| 久久精品日韩一区二区三区| 喷白浆一区二区| 4438x亚洲最大成人网| 亚洲一卡二卡三卡四卡| 91免费观看在线| 国产精品麻豆一区二区| 不卡视频在线看| 中文字幕一区二区在线播放| 成人h版在线观看| 国产精品午夜免费| 99久久精品久久久久久清纯|