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

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

?? des.cpp

?? des加密算法 des加密算法 des加密算法 解密
?? CPP
字號:
#ifndef _DES_H_
#define _DES_H_

#include <iostream>
using namespace std;

#define BIT	 bool
#define BYTE unsigned char

class Des
{
private:	
	BIT	subKey[16][48];				

	static BYTE Etable[48];			
	static BYTE Ptable[32];			
	static BYTE IpTable[64];		
	static BYTE IprTable[64];		
	static BYTE Pc1Table[56];		
	static BYTE Pc2Table[48];		
	static BYTE LoopTable[16];		
	static BYTE Sbox[8][4][16];		

public:
	Des();

	void Cipher(BYTE out[8], const BYTE in[8]);		
	void InvCipher(BYTE out[8], const BYTE in[8]);  

	void SetKey(const BYTE key[8]);											
	static void Ffunc(BIT in[32], const BIT ki[48]);							
	static void Sfunc(BIT out[32], const BIT in[48]);						
	static void RotateL(BIT *in, int len, int loop);						
	static void Xor(BIT *ina, const BIT *inb, int len);						
	static void ByteToBit(BIT *out, const BYTE *in, int bits);				
	static void BitToByte(BYTE *out, const BIT *in, int bits);				
	static void Transform(BIT *out, BIT *in, const BYTE *table, int len);	

private:
	Des(const Des& des);
	Des operator=(const Des& des);
};

#endif

Des::Des()
{
}


BYTE Des::IpTable[64] = {
	58, 50, 42, 34, 26, 18, 10,  2, 
	60, 52, 44, 36, 28, 20, 12,  4,
	62, 54, 46, 38, 30, 22, 14,  6,
	64, 56, 48, 40, 32, 24, 16,  8,
	57, 49, 41, 33, 25, 17,  9,  1,
	59, 51, 43, 35, 27, 19, 11,  3,
	61, 53, 45, 37, 29, 21, 13,  5,
	63, 55, 47, 39, 31, 23, 15,  7
};

BYTE Des::IprTable[64] = {
	40,  8, 48, 16, 56, 24, 64, 32,
	39,  7, 47, 15, 55, 23, 63, 31,
	38,  6, 46, 14, 54, 22, 62, 30, 
	37,  5, 45, 13, 53, 21, 61, 29,
	36,  4, 44, 12, 52, 20, 60, 28,
	35,  3, 43, 11, 51, 19, 59, 27,
	34,  2, 42, 10, 50, 18, 58, 26,
	33,  1, 41,  9, 49, 17, 57, 25
};


BYTE Des::Etable[48] = {
	32,  1,  2,  3,  4,  5,  4,  5,
	 6,	 7,  8,  9,  8,  9, 10, 11, 
	12, 13, 12, 13, 14, 15, 16, 17,
	16, 17, 18, 19, 20, 21, 20, 21,
	22, 23, 24, 25, 24, 25, 26, 27, 
	28, 29, 28, 29, 30, 31, 32,  1
};


BYTE Des::Ptable[32]={
	16,  7, 20, 21, 29, 12, 28, 17,
	 1, 15, 23, 26,  5, 18, 31, 10,
	 2,  8, 24, 14, 32, 27,  3,  9,
	19, 13, 30,  6, 22, 11,  4, 25
};


BYTE Des::Pc1Table[56]={
	57, 49, 41, 33, 25, 17,  9,  1,
	58, 50, 42, 34, 26, 18, 10,  2,
	59, 51, 43, 35, 27, 19, 11,  3,
	60, 52, 44, 36, 63, 55, 47, 39,
	31, 23, 15,  7, 62, 54, 46, 38,
	30, 22, 14,  6, 61, 53, 45, 37,
	29, 21, 13,  5, 28, 20, 12,  4
};


BYTE Des::Pc2Table[48] = {
	14, 17, 11, 24,  1,  5,  3, 28,
	15,  6, 21, 10, 23, 19, 12,  4,
	26,  8, 16,  7, 27, 20, 13,  2,
	41, 52, 31, 37, 47, 55, 30, 40,
	51, 45, 33, 48, 44, 49, 39, 56,
	34, 53, 46, 42, 50, 36, 29, 32
};


BYTE Des::LoopTable[16] = {
	 1,  1,  2,  2,  2,  2,  2,  2,
	 1,  2,  2,  2,  2,  2,  2,  1
};


BYTE Des::Sbox[8][4][16] = {
       //s1
       14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
       0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
       4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
       15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13,
       //s2
       15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
       3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
       0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
       13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9,
       //s3
       10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
       13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
       13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
       1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12,
       //s4
       7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
       13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
       10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
       3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14,
       //s5
       2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
       14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
       4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
       11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3,
       //s6
       12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
       10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
       9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
       4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13,
       //s7
       4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
       13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
       1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
       6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12,
       //s8
       13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
       1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
       7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
       2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
};


void Des::SetKey(const BYTE key[8])
{
	static BIT	k[64], 
				*kl=&k[0], 
				*kr=&k[28];

	ByteToBit(k, key, 64);

	Transform(k, k, Pc1Table, 56);

	for(int i=0; i<16; i++)
	{
		RotateL(kl, 28, LoopTable[i]);

		RotateL(kr, 28, LoopTable[i]);

		Transform(subKey[i], k, Pc2Table, 48);
	}
}


void Des::Ffunc(BIT in[32], const BIT ki[48])
{
	static BIT mr[48];

	Transform(mr, in, Etable, 48);			

	Xor(mr, ki, 48);						// 子密鑰

	Sfunc(in, mr);							// S盒替換

	Transform(in, in, Ptable, 32);			// P盒替換
}


void Des::Sfunc(BIT out[32], const BIT in[48])
{
	for(BYTE i=0, j, k; i<8; i++, in+=6, out+=4)
	{
		j = (in[0] << 1) + in[5];
		k = (in[1] << 3) + (in[2] << 2) + (in[3] << 1) + in[4];
		ByteToBit(out, &Sbox[i][j][k], 4);
	}
}


void Des::RotateL(BIT *in, int len, int loop)
{
	static BIT tmp[256];
	memcpy(tmp, in, sizeof(BIT) * loop);
	memcpy(in, in+loop, sizeof(BIT) * (len-loop));
	memcpy(in+len-loop, tmp, sizeof(BIT) * loop);
}


void Des::Xor(BIT *ina, const BIT *inb, int len)
{
	for(int i=0; i<len; i++)
	{
		ina[i] ^= inb[i];
	}
}


void Des::ByteToBit(BIT *out, const BYTE *in, int bits)
{
	for(int i=0; i<bits; i++)
	{
		out[i] = (in[i/8] >> (i%8)) & 1;
	}
}


void Des::BitToByte(BYTE *out, const BIT *in, int bits)
{
	memset(out, 0, (bits+7) / 8);
    
	for(int i=0; i<bits; i++)
	{
		out[i/8] |= in[i] << (i%8);
	}
}

		
void Des::Transform(BIT *out, BIT *in, const BYTE *table, int len)
{
	static BIT tmp[256];

	for(int i=0; i<len; i++)
	{
		tmp[i] = in[table[i]-1];
	}

	memcpy(out, tmp, sizeof(BIT) * len);
}


void Des::Cipher(BYTE out[8], const BYTE in[8])
{
	static BIT	m[64],
				tmp[32],
				*li = &m[0], 
				*ri=&m[32];

	ByteToBit(m, in, 64);

	Transform(m, m, IpTable, 64);

	for(int i=0; i<16; i++)
	{
		memcpy(tmp, ri, 32);

		Ffunc(ri, subKey[i]);

		Xor(ri, li, 32);

		memcpy(li, tmp, 32);
	}

	Transform(m, m, IprTable, 64);

	BitToByte(out, m, 64);
}


void Des::InvCipher(BYTE out[8], const BYTE in[8])
{
	static BIT	m[64],
				tmp[32],
				*li = &m[0], 
				*ri=&m[32];

	ByteToBit(m, in, 64);

	Transform(m, m, IpTable, 64);

	for(int i=15; i>=0; i--)
	{
		memcpy(tmp, li, 32);

		Ffunc(li,subKey[i]);

		Xor(li, ri, 32);

		memcpy(ri, tmp, 32);
	}

	Transform(m, m, IprTable, 64);

	BitToByte(out, m, 64);
}


#include <iostream>
using namespace std;

void main()
{
		BYTE key[8];
	    BYTE str[8];
       freopen("input.txt", "r", stdin);
	   
	   freopen("output.txt", "w", stdout);

	   cout<<"please input your key(8 bytes):"<<endl;
	   
	   cin>>key;

       cout<<"please input your words (less than 8 byte!):"<<endl;

       cin>>str;
       
	   Des des;
	   
	   des.SetKey(key);

       des.Cipher(str, str);

       cout<<"after encrypting:"<<endl<<str<<endl;
       
	   cout<<"after decrypting:"<<endl;

       des.InvCipher(str, str);

       cout<<str<<endl;

       cout<<endl<<" successful!  welcome next time"<<endl;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久久精品一区二区| 国产精品久久久久国产精品日日| 日本精品视频一区二区三区| 成人av第一页| caoporen国产精品视频| 成人国产一区二区三区精品| 国产夫妻精品视频| 大尺度一区二区| av亚洲产国偷v产偷v自拍| 91免费版pro下载短视频| 91丝袜美女网| 欧美亚洲免费在线一区| 欧美精品少妇一区二区三区| 中文字幕日韩一区二区| 国产精品入口麻豆九色| 中文字幕在线观看一区| 亚洲品质自拍视频| 亚洲一区在线观看免费| 五月天婷婷综合| 久久97超碰国产精品超碰| 国产呦萝稀缺另类资源| 成人a级免费电影| 欧美在线观看视频在线| 在线播放亚洲一区| 精品日韩一区二区三区| 国产亚洲精品免费| 亚洲特黄一级片| 亚洲成人激情av| 久久精品国产免费| 国产成人欧美日韩在线电影| caoporen国产精品视频| 欧美日韩久久一区二区| 精品久久国产老人久久综合| 国产欧美精品一区| 一区二区日韩电影| 蜜臀久久99精品久久久久宅男| 国产专区综合网| 色婷婷久久久亚洲一区二区三区| 在线成人高清不卡| 欧美国产精品久久| 一区二区三区中文字幕| 青青草一区二区三区| 高清不卡一二三区| 欧美日韩成人在线一区| 久久久亚洲欧洲日产国码αv| 中文字幕在线一区| 男人的天堂久久精品| 成人丝袜18视频在线观看| 欧美色成人综合| 久久精品视频免费| 午夜欧美大尺度福利影院在线看| 精品一区二区三区免费| 色婷婷精品久久二区二区蜜臂av| 日韩精品专区在线影院重磅| 国产精品久久久久7777按摩| 日本午夜一区二区| 99re热这里只有精品免费视频| 在线综合视频播放| 日韩伦理av电影| 久草这里只有精品视频| 色综合久久久久| 国产午夜一区二区三区| 亚洲二区视频在线| www.成人网.com| 精品国产乱码久久久久久夜甘婷婷 | 日本午夜精品视频在线观看| 成熟亚洲日本毛茸茸凸凹| 欧美一区二区福利在线| 亚洲一区免费在线观看| 高清在线观看日韩| 日韩视频免费观看高清完整版 | 日本一区二区三区高清不卡| 日日嗨av一区二区三区四区| 91在线视频免费观看| 国产视频一区二区在线| 天天综合天天综合色| 色综合久久中文字幕| 日本一区二区在线不卡| 韩国精品主播一区二区在线观看| 欧美二区在线观看| 亚洲夂夂婷婷色拍ww47| 成人开心网精品视频| 国产视频在线观看一区二区三区 | 国产一区二区在线影院| 69堂成人精品免费视频| 亚洲精品免费在线播放| 成人高清免费观看| 国产性做久久久久久| 国产真实乱偷精品视频免| 欧美一区二区在线免费观看| 亚洲午夜免费电影| 欧美在线一区二区| 国产精品久久二区二区| 成人午夜av在线| 国产婷婷一区二区| 国产成人啪午夜精品网站男同| 精品久久人人做人人爰| 美女网站视频久久| 欧美一卡二卡三卡| 热久久一区二区| 日韩你懂的电影在线观看| 日韩中文欧美在线| 欧美丰满一区二区免费视频| 亚洲观看高清完整版在线观看| 色伊人久久综合中文字幕| 中文字幕在线不卡| 91麻豆蜜桃一区二区三区| 亚洲欧美一区二区久久| 91行情网站电视在线观看高清版| 亚洲免费高清视频在线| 一本大道综合伊人精品热热| 亚洲美女区一区| 欧美亚洲国产一区二区三区va | 亚洲一线二线三线久久久| 在线视频欧美精品| 亚洲一区二区三区三| 欧美精品v国产精品v日韩精品| 视频一区欧美精品| 538在线一区二区精品国产| 麻豆成人久久精品二区三区红| 精品国产电影一区二区| 国产精品18久久久久| 国产精品看片你懂得| 色视频成人在线观看免| 日韩国产成人精品| 精品成a人在线观看| 不卡av在线网| 亚洲大片一区二区三区| 日韩精品一区二区在线观看| 国产成人亚洲综合色影视| 综合精品久久久| 欧美美女直播网站| 久久99精品国产麻豆婷婷洗澡| 国产香蕉久久精品综合网| 91天堂素人约啪| 日本视频一区二区| 国产欧美日韩不卡免费| 欧洲av一区二区嗯嗯嗯啊| 麻豆传媒一区二区三区| 国产精品动漫网站| 欧美精品乱人伦久久久久久| 国产真实乱偷精品视频免| 亚洲精品视频在线观看网站| 日韩视频在线一区二区| av在线这里只有精品| 视频一区二区三区入口| 国产欧美日韩麻豆91| 国产精品色婷婷| 欧美日韩国产综合一区二区| 国产在线精品国自产拍免费| 亚洲蜜臀av乱码久久精品蜜桃| 555夜色666亚洲国产免| 粉嫩13p一区二区三区| 无吗不卡中文字幕| 国产网站一区二区三区| 欧美日韩国产影片| 成人性视频网站| 亚洲v日本v欧美v久久精品| 国产午夜亚洲精品羞羞网站| 欧美视频一区二区三区四区| 精品午夜一区二区三区在线观看 | 成人综合在线观看| 五月天激情综合| 日韩伦理电影网| 久久久国产精华| 7777精品伊人久久久大香线蕉完整版| 岛国av在线一区| 男女视频一区二区| 尤物在线观看一区| 国产精品久久影院| 欧美xxxxx裸体时装秀| 91电影在线观看| 成人精品在线视频观看| 蜜桃av一区二区三区电影| 一区二区三区色| 中文字幕不卡一区| 日韩精品一区二区三区四区视频| 欧美亚洲动漫精品| jlzzjlzz亚洲女人18| 国产一区二区精品久久99 | 在线看日韩精品电影| 成人午夜激情在线| 国产精品亚洲а∨天堂免在线| 日韩电影一区二区三区| 亚洲免费观看高清完整版在线观看| 国产亚洲一二三区| 日韩视频123| 欧美日韩成人一区二区| 91久久精品国产91性色tv| 不卡一区二区在线| 粗大黑人巨茎大战欧美成人| 国产一级精品在线| 国模套图日韩精品一区二区| 青青国产91久久久久久| 日韩精品色哟哟| 午夜精品在线视频一区| 亚洲综合一区在线| 亚洲免费观看视频| 一区二区三区加勒比av| 亚洲最新在线观看|