⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vnc-password

📁 xen 3.2.2 源码
💻
📖 第 1 页 / 共 2 页
字号:
+		    if( l < 56 ) pcr[j] = pc1m[l];+		    else pcr[j] = pc1m[l - 28];+		    }+		for( j = 0; j < 24; j++ ) {+			if( pcr[pc2[j]] ) kn[m] |= bigbyte[j];+			if( pcr[pc2[j+24]] ) kn[n] |= bigbyte[j];+			}+		}+	cookey(kn);+	return;+	}++static void cookey(raw1)+register unsigned long *raw1;+{+	register unsigned long *cook, *raw0;+	unsigned long dough[32];+	register int i;++	cook = dough;+	for( i = 0; i < 16; i++, raw1++ ) {+		raw0 = raw1++;+		*cook	 = (*raw0 & 0x00fc0000L) << 6;+		*cook	|= (*raw0 & 0x00000fc0L) << 10;+		*cook	|= (*raw1 & 0x00fc0000L) >> 10;+		*cook++ |= (*raw1 & 0x00000fc0L) >> 6;+		*cook	 = (*raw0 & 0x0003f000L) << 12;+		*cook	|= (*raw0 & 0x0000003fL) << 16;+		*cook	|= (*raw1 & 0x0003f000L) >> 4;+		*cook++ |= (*raw1 & 0x0000003fL);+		}+	usekey(dough);+	return;+	}++void cpkey(into)+register unsigned long *into;+{+	register unsigned long *from, *endp;++	from = KnL, endp = &KnL[32];+	while( from < endp ) *into++ = *from++;+	return;+	}++void usekey(from)+register unsigned long *from;+{+	register unsigned long *to, *endp;++	to = KnL, endp = &KnL[32];+	while( to < endp ) *to++ = *from++;+	return;+	}++void des(inblock, outblock)+unsigned char *inblock, *outblock;+{+	unsigned long work[2];++	scrunch(inblock, work);+	desfunc(work, KnL);+	unscrun(work, outblock);+	return;+	}++static void scrunch(outof, into)+register unsigned char *outof;+register unsigned long *into;+{+	*into	 = (*outof++ & 0xffL) << 24;+	*into	|= (*outof++ & 0xffL) << 16;+	*into	|= (*outof++ & 0xffL) << 8;+	*into++ |= (*outof++ & 0xffL);+	*into	 = (*outof++ & 0xffL) << 24;+	*into	|= (*outof++ & 0xffL) << 16;+	*into	|= (*outof++ & 0xffL) << 8;+	*into	|= (*outof   & 0xffL);+	return;+	}++static void unscrun(outof, into)+register unsigned long *outof;+register unsigned char *into;+{+	*into++ = (unsigned char)((*outof >> 24) & 0xffL);+	*into++ = (unsigned char)((*outof >> 16) & 0xffL);+	*into++ = (unsigned char)((*outof >>  8) & 0xffL);+	*into++ = (unsigned char)(*outof++	 & 0xffL);+	*into++ = (unsigned char)((*outof >> 24) & 0xffL);+	*into++ = (unsigned char)((*outof >> 16) & 0xffL);+	*into++ = (unsigned char)((*outof >>  8) & 0xffL);+	*into	=  (unsigned char)(*outof	 & 0xffL);+	return;+	}++static unsigned long SP1[64] = {+	0x01010400L, 0x00000000L, 0x00010000L, 0x01010404L,+	0x01010004L, 0x00010404L, 0x00000004L, 0x00010000L,+	0x00000400L, 0x01010400L, 0x01010404L, 0x00000400L,+	0x01000404L, 0x01010004L, 0x01000000L, 0x00000004L,+	0x00000404L, 0x01000400L, 0x01000400L, 0x00010400L,+	0x00010400L, 0x01010000L, 0x01010000L, 0x01000404L,+	0x00010004L, 0x01000004L, 0x01000004L, 0x00010004L,+	0x00000000L, 0x00000404L, 0x00010404L, 0x01000000L,+	0x00010000L, 0x01010404L, 0x00000004L, 0x01010000L,+	0x01010400L, 0x01000000L, 0x01000000L, 0x00000400L,+	0x01010004L, 0x00010000L, 0x00010400L, 0x01000004L,+	0x00000400L, 0x00000004L, 0x01000404L, 0x00010404L,+	0x01010404L, 0x00010004L, 0x01010000L, 0x01000404L,+	0x01000004L, 0x00000404L, 0x00010404L, 0x01010400L,+	0x00000404L, 0x01000400L, 0x01000400L, 0x00000000L,+	0x00010004L, 0x00010400L, 0x00000000L, 0x01010004L };++static unsigned long SP2[64] = {+	0x80108020L, 0x80008000L, 0x00008000L, 0x00108020L,+	0x00100000L, 0x00000020L, 0x80100020L, 0x80008020L,+	0x80000020L, 0x80108020L, 0x80108000L, 0x80000000L,+	0x80008000L, 0x00100000L, 0x00000020L, 0x80100020L,+	0x00108000L, 0x00100020L, 0x80008020L, 0x00000000L,+	0x80000000L, 0x00008000L, 0x00108020L, 0x80100000L,+	0x00100020L, 0x80000020L, 0x00000000L, 0x00108000L,+	0x00008020L, 0x80108000L, 0x80100000L, 0x00008020L,+	0x00000000L, 0x00108020L, 0x80100020L, 0x00100000L,+	0x80008020L, 0x80100000L, 0x80108000L, 0x00008000L,+	0x80100000L, 0x80008000L, 0x00000020L, 0x80108020L,+	0x00108020L, 0x00000020L, 0x00008000L, 0x80000000L,+	0x00008020L, 0x80108000L, 0x00100000L, 0x80000020L,+	0x00100020L, 0x80008020L, 0x80000020L, 0x00100020L,+	0x00108000L, 0x00000000L, 0x80008000L, 0x00008020L,+	0x80000000L, 0x80100020L, 0x80108020L, 0x00108000L };++static unsigned long SP3[64] = {+	0x00000208L, 0x08020200L, 0x00000000L, 0x08020008L,+	0x08000200L, 0x00000000L, 0x00020208L, 0x08000200L,+	0x00020008L, 0x08000008L, 0x08000008L, 0x00020000L,+	0x08020208L, 0x00020008L, 0x08020000L, 0x00000208L,+	0x08000000L, 0x00000008L, 0x08020200L, 0x00000200L,+	0x00020200L, 0x08020000L, 0x08020008L, 0x00020208L,+	0x08000208L, 0x00020200L, 0x00020000L, 0x08000208L,+	0x00000008L, 0x08020208L, 0x00000200L, 0x08000000L,+	0x08020200L, 0x08000000L, 0x00020008L, 0x00000208L,+	0x00020000L, 0x08020200L, 0x08000200L, 0x00000000L,+	0x00000200L, 0x00020008L, 0x08020208L, 0x08000200L,+	0x08000008L, 0x00000200L, 0x00000000L, 0x08020008L,+	0x08000208L, 0x00020000L, 0x08000000L, 0x08020208L,+	0x00000008L, 0x00020208L, 0x00020200L, 0x08000008L,+	0x08020000L, 0x08000208L, 0x00000208L, 0x08020000L,+	0x00020208L, 0x00000008L, 0x08020008L, 0x00020200L };++static unsigned long SP4[64] = {+	0x00802001L, 0x00002081L, 0x00002081L, 0x00000080L,+	0x00802080L, 0x00800081L, 0x00800001L, 0x00002001L,+	0x00000000L, 0x00802000L, 0x00802000L, 0x00802081L,+	0x00000081L, 0x00000000L, 0x00800080L, 0x00800001L,+	0x00000001L, 0x00002000L, 0x00800000L, 0x00802001L,+	0x00000080L, 0x00800000L, 0x00002001L, 0x00002080L,+	0x00800081L, 0x00000001L, 0x00002080L, 0x00800080L,+	0x00002000L, 0x00802080L, 0x00802081L, 0x00000081L,+	0x00800080L, 0x00800001L, 0x00802000L, 0x00802081L,+	0x00000081L, 0x00000000L, 0x00000000L, 0x00802000L,+	0x00002080L, 0x00800080L, 0x00800081L, 0x00000001L,+	0x00802001L, 0x00002081L, 0x00002081L, 0x00000080L,+	0x00802081L, 0x00000081L, 0x00000001L, 0x00002000L,+	0x00800001L, 0x00002001L, 0x00802080L, 0x00800081L,+	0x00002001L, 0x00002080L, 0x00800000L, 0x00802001L,+	0x00000080L, 0x00800000L, 0x00002000L, 0x00802080L };++static unsigned long SP5[64] = {+	0x00000100L, 0x02080100L, 0x02080000L, 0x42000100L,+	0x00080000L, 0x00000100L, 0x40000000L, 0x02080000L,+	0x40080100L, 0x00080000L, 0x02000100L, 0x40080100L,+	0x42000100L, 0x42080000L, 0x00080100L, 0x40000000L,+	0x02000000L, 0x40080000L, 0x40080000L, 0x00000000L,+	0x40000100L, 0x42080100L, 0x42080100L, 0x02000100L,+	0x42080000L, 0x40000100L, 0x00000000L, 0x42000000L,+	0x02080100L, 0x02000000L, 0x42000000L, 0x00080100L,+	0x00080000L, 0x42000100L, 0x00000100L, 0x02000000L,+	0x40000000L, 0x02080000L, 0x42000100L, 0x40080100L,+	0x02000100L, 0x40000000L, 0x42080000L, 0x02080100L,+	0x40080100L, 0x00000100L, 0x02000000L, 0x42080000L,+	0x42080100L, 0x00080100L, 0x42000000L, 0x42080100L,+	0x02080000L, 0x00000000L, 0x40080000L, 0x42000000L,+	0x00080100L, 0x02000100L, 0x40000100L, 0x00080000L,+	0x00000000L, 0x40080000L, 0x02080100L, 0x40000100L };++static unsigned long SP6[64] = {+	0x20000010L, 0x20400000L, 0x00004000L, 0x20404010L,+	0x20400000L, 0x00000010L, 0x20404010L, 0x00400000L,+	0x20004000L, 0x00404010L, 0x00400000L, 0x20000010L,+	0x00400010L, 0x20004000L, 0x20000000L, 0x00004010L,+	0x00000000L, 0x00400010L, 0x20004010L, 0x00004000L,+	0x00404000L, 0x20004010L, 0x00000010L, 0x20400010L,+	0x20400010L, 0x00000000L, 0x00404010L, 0x20404000L,+	0x00004010L, 0x00404000L, 0x20404000L, 0x20000000L,+	0x20004000L, 0x00000010L, 0x20400010L, 0x00404000L,+	0x20404010L, 0x00400000L, 0x00004010L, 0x20000010L,+	0x00400000L, 0x20004000L, 0x20000000L, 0x00004010L,+	0x20000010L, 0x20404010L, 0x00404000L, 0x20400000L,+	0x00404010L, 0x20404000L, 0x00000000L, 0x20400010L,+	0x00000010L, 0x00004000L, 0x20400000L, 0x00404010L,+	0x00004000L, 0x00400010L, 0x20004010L, 0x00000000L,+	0x20404000L, 0x20000000L, 0x00400010L, 0x20004010L };++static unsigned long SP7[64] = {+	0x00200000L, 0x04200002L, 0x04000802L, 0x00000000L,+	0x00000800L, 0x04000802L, 0x00200802L, 0x04200800L,+	0x04200802L, 0x00200000L, 0x00000000L, 0x04000002L,+	0x00000002L, 0x04000000L, 0x04200002L, 0x00000802L,+	0x04000800L, 0x00200802L, 0x00200002L, 0x04000800L,+	0x04000002L, 0x04200000L, 0x04200800L, 0x00200002L,+	0x04200000L, 0x00000800L, 0x00000802L, 0x04200802L,+	0x00200800L, 0x00000002L, 0x04000000L, 0x00200800L,+	0x04000000L, 0x00200800L, 0x00200000L, 0x04000802L,+	0x04000802L, 0x04200002L, 0x04200002L, 0x00000002L,+	0x00200002L, 0x04000000L, 0x04000800L, 0x00200000L,+	0x04200800L, 0x00000802L, 0x00200802L, 0x04200800L,+	0x00000802L, 0x04000002L, 0x04200802L, 0x04200000L,+	0x00200800L, 0x00000000L, 0x00000002L, 0x04200802L,+	0x00000000L, 0x00200802L, 0x04200000L, 0x00000800L,+	0x04000002L, 0x04000800L, 0x00000800L, 0x00200002L };++static unsigned long SP8[64] = {+	0x10001040L, 0x00001000L, 0x00040000L, 0x10041040L,+	0x10000000L, 0x10001040L, 0x00000040L, 0x10000000L,+	0x00040040L, 0x10040000L, 0x10041040L, 0x00041000L,+	0x10041000L, 0x00041040L, 0x00001000L, 0x00000040L,+	0x10040000L, 0x10000040L, 0x10001000L, 0x00001040L,+	0x00041000L, 0x00040040L, 0x10040040L, 0x10041000L,+	0x00001040L, 0x00000000L, 0x00000000L, 0x10040040L,+	0x10000040L, 0x10001000L, 0x00041040L, 0x00040000L,+	0x00041040L, 0x00040000L, 0x10041000L, 0x00001000L,+	0x00000040L, 0x10040040L, 0x00001000L, 0x00041040L,+	0x10001000L, 0x00000040L, 0x10000040L, 0x10040000L,+	0x10040040L, 0x10000000L, 0x00040000L, 0x10001040L,+	0x00000000L, 0x10041040L, 0x00040040L, 0x10000040L,+	0x10040000L, 0x10001000L, 0x10001040L, 0x00000000L,+	0x10041040L, 0x00041000L, 0x00041000L, 0x00001040L,+	0x00001040L, 0x00040040L, 0x10000000L, 0x10041000L };++static void desfunc(block, keys)+register unsigned long *block, *keys;+{+	register unsigned long fval, work, right, leftt;+	register int round;++	leftt = block[0];+	right = block[1];+	work = ((leftt >> 4) ^ right) & 0x0f0f0f0fL;+	right ^= work;+	leftt ^= (work << 4);+	work = ((leftt >> 16) ^ right) & 0x0000ffffL;+	right ^= work;+	leftt ^= (work << 16);+	work = ((right >> 2) ^ leftt) & 0x33333333L;+	leftt ^= work;+	right ^= (work << 2);+	work = ((right >> 8) ^ leftt) & 0x00ff00ffL;+	leftt ^= work;+	right ^= (work << 8);+	right = ((right << 1) | ((right >> 31) & 1L)) & 0xffffffffL;+	work = (leftt ^ right) & 0xaaaaaaaaL;+	leftt ^= work;+	right ^= work;+	leftt = ((leftt << 1) | ((leftt >> 31) & 1L)) & 0xffffffffL;++	for( round = 0; round < 8; round++ ) {+		work  = (right << 28) | (right >> 4);+		work ^= *keys++;+		fval  = SP7[ work		 & 0x3fL];+		fval |= SP5[(work >>  8) & 0x3fL];+		fval |= SP3[(work >> 16) & 0x3fL];+		fval |= SP1[(work >> 24) & 0x3fL];+		work  = right ^ *keys++;+		fval |= SP8[ work		 & 0x3fL];+		fval |= SP6[(work >>  8) & 0x3fL];+		fval |= SP4[(work >> 16) & 0x3fL];+		fval |= SP2[(work >> 24) & 0x3fL];+		leftt ^= fval;+		work  = (leftt << 28) | (leftt >> 4);+		work ^= *keys++;+		fval  = SP7[ work		 & 0x3fL];+		fval |= SP5[(work >>  8) & 0x3fL];+		fval |= SP3[(work >> 16) & 0x3fL];+		fval |= SP1[(work >> 24) & 0x3fL];+		work  = leftt ^ *keys++;+		fval |= SP8[ work		 & 0x3fL];+		fval |= SP6[(work >>  8) & 0x3fL];+		fval |= SP4[(work >> 16) & 0x3fL];+		fval |= SP2[(work >> 24) & 0x3fL];+		right ^= fval;+		}++	right = (right << 31) | (right >> 1);+	work = (leftt ^ right) & 0xaaaaaaaaL;+	leftt ^= work;+	right ^= work;+	leftt = (leftt << 31) | (leftt >> 1);+	work = ((leftt >> 8) ^ right) & 0x00ff00ffL;+	right ^= work;+	leftt ^= (work << 8);+	work = ((leftt >> 2) ^ right) & 0x33333333L;+	right ^= work;+	leftt ^= (work << 2);+	work = ((right >> 16) ^ leftt) & 0x0000ffffL;+	leftt ^= work;+	right ^= (work << 16);+	work = ((right >> 4) ^ leftt) & 0x0f0f0f0fL;+	leftt ^= work;+	right ^= (work << 4);+	*block++ = right;+	*block = leftt;+	return;+	}++/* Validation sets:+ *+ * Single-length key, single-length plaintext -+ * Key	  : 0123 4567 89ab cdef+ * Plain  : 0123 4567 89ab cde7+ * Cipher : c957 4425 6a5e d31d+ *+ * Double-length key, single-length plaintext -+ * Key	  : 0123 4567 89ab cdef fedc ba98 7654 3210+ * Plain  : 0123 4567 89ab cde7+ * Cipher : 7f1d 0a77 826b 8aff+ *+ * Double-length key, double-length plaintext -+ * Key	  : 0123 4567 89ab cdef fedc ba98 7654 3210+ * Plain  : 0123 4567 89ab cdef 0123 4567 89ab cdff+ * Cipher : 27a0 8440 406a df60 278f 47cf 42d6 15d7+ *+ * Triple-length key, single-length plaintext -+ * Key	  : 0123 4567 89ab cdef fedc ba98 7654 3210 89ab cdef 0123 4567+ * Plain  : 0123 4567 89ab cde7+ * Cipher : de0b 7c06 ae5e 0ed5+ *+ * Triple-length key, double-length plaintext -+ * Key	  : 0123 4567 89ab cdef fedc ba98 7654 3210 89ab cdef 0123 4567+ * Plain  : 0123 4567 89ab cdef 0123 4567 89ab cdff+ * Cipher : ad0d 1b30 ac17 cf07 0ed1 1c63 81e4 4de5+ *+ * d3des V5.0a rwo 9208.07 18:44 Graven Imagery+ **********************************************************************/Index: ioemu/d3des.h===================================================================--- /dev/null	1970-01-01 00:00:00.000000000 +0000+++ ioemu/d3des.h	2007-05-10 15:35:24.000000000 +0100@@ -0,0 +1,51 @@+/*+ * This is D3DES (V5.09) by Richard Outerbridge with the double and+ * triple-length support removed for use in VNC.+ *+ * These changes are:+ *  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.+ *+ * This software 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.+ */++/* d3des.h -+ *+ *	Headers and defines for d3des.c+ *	Graven Imagery, 1992.+ *+ * Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge+ *	(GEnie : OUTER; CIS : [71755,204])+ */++#define EN0	0	/* MODE == encrypt */+#define DE1	1	/* MODE == decrypt */++extern void deskey(unsigned char *, int);+/*		      hexkey[8]     MODE+ * Sets the internal key register according to the hexadecimal+ * key contained in the 8 bytes of hexkey, according to the DES,+ * for encryption or decryption according to MODE.+ */++extern void usekey(unsigned long *);+/*		    cookedkey[32]+ * Loads the internal key register with the data in cookedkey.+ */++extern void cpkey(unsigned long *);+/*		   cookedkey[32]+ * Copies the contents of the internal key register into the storage+ * located at &cookedkey[0].+ */++extern void des(unsigned char *, unsigned char *);+/*		    from[8]	      to[8]+ * Encrypts/Decrypts (according to the key currently loaded in the+ * internal key register) one block of eight bytes at address 'from'+ * into the block at address 'to'.  They can be the same.+ */++/* d3des.h V5.09 rwo 9208.04 15:06 Graven Imagery+ ********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -