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

📄 crypt.c

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 C
📖 第 1 页 / 共 2 页
字号:
/* crypto/des/fcrypt.c *//* Copyright (C) 1996 Eric Young (eay@mincom.oz.au) * All rights reserved. * * This package is an SSL implementation written * by Eric Young (eay@mincom.oz.au). * The implementation was written so as to conform with Netscapes SSL. *  * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to.  The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code.  The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@mincom.oz.au). *  * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *    "This product includes cryptographic software written by *     Eric Young (eay@mincom.oz.au)" *    The word 'cryptographic' can be left out if the rouines from the library *    being used are not cryptographic related :-). * 4. If you include any Windows specific code (or a derivative thereof) from  *    the apps directory (application code) you must include an acknowledgement: *    "This product includes software written by Tim Hudson (tjh@mincom.oz.au)" *  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *  * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed.  i.e. this code cannot simply be * copied and put under another distribution licence * [including the GNU Public Licence.] */#include <stdio.h>/* Eric Young. * This version of crypt has been developed from my MIT compatable * DES library. * The library is available at pub/Crypto/DES at ftp.psy.uq.oz.au * eay@mincom.oz.au or eay@psych.psy.uq.oz.au *//* Modification by Jens Kupferschmidt (Cu) * I have included directive PARA for shared memory computers. * I have included a directive LONGCRYPT to using this routine to cipher * passwords with more then 8 bytes like HP-UX 10.x it used. The MAXPLEN * definition is the maximum of lenght of password and can changed. I have * defined 24. */#ifndef HEADER_DES_LOCL_H#if defined(NOCONST)#define const#endif/* I now assume that you have des.h available */#include "des.h"#define ITERATIONS 16#define HALF_ITERATIONS 8#define c2l(c,l)	(l =((DES_LONG)(*((c)++)))    , \			 l|=((DES_LONG)(*((c)++)))<< 8, \			 l|=((DES_LONG)(*((c)++)))<<16, \			 l|=((DES_LONG)(*((c)++)))<<24)#define l2c(l,c)	(*((c)++)=(unsigned char)(((l)    )&0xff), \			 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \			 *((c)++)=(unsigned char)(((l)>>16)&0xff), \			 *((c)++)=(unsigned char)(((l)>>24)&0xff))static const DES_LONG des_SPtrans[8][64]={{/* nibble 0 */0x00820200L, 0x00020000L, 0x80800000L, 0x80820200L,0x00800000L, 0x80020200L, 0x80020000L, 0x80800000L,0x80020200L, 0x00820200L, 0x00820000L, 0x80000200L,0x80800200L, 0x00800000L, 0x00000000L, 0x80020000L,0x00020000L, 0x80000000L, 0x00800200L, 0x00020200L,0x80820200L, 0x00820000L, 0x80000200L, 0x00800200L,0x80000000L, 0x00000200L, 0x00020200L, 0x80820000L,0x00000200L, 0x80800200L, 0x80820000L, 0x00000000L,0x00000000L, 0x80820200L, 0x00800200L, 0x80020000L,0x00820200L, 0x00020000L, 0x80000200L, 0x00800200L,0x80820000L, 0x00000200L, 0x00020200L, 0x80800000L,0x80020200L, 0x80000000L, 0x80800000L, 0x00820000L,0x80820200L, 0x00020200L, 0x00820000L, 0x80800200L,0x00800000L, 0x80000200L, 0x80020000L, 0x00000000L,0x00020000L, 0x00800000L, 0x80800200L, 0x00820200L,0x80000000L, 0x80820000L, 0x00000200L, 0x80020200L,},{/* nibble 1 */0x10042004L, 0x00000000L, 0x00042000L, 0x10040000L,0x10000004L, 0x00002004L, 0x10002000L, 0x00042000L,0x00002000L, 0x10040004L, 0x00000004L, 0x10002000L,0x00040004L, 0x10042000L, 0x10040000L, 0x00000004L,0x00040000L, 0x10002004L, 0x10040004L, 0x00002000L,0x00042004L, 0x10000000L, 0x00000000L, 0x00040004L,0x10002004L, 0x00042004L, 0x10042000L, 0x10000004L,0x10000000L, 0x00040000L, 0x00002004L, 0x10042004L,0x00040004L, 0x10042000L, 0x10002000L, 0x00042004L,0x10042004L, 0x00040004L, 0x10000004L, 0x00000000L,0x10000000L, 0x00002004L, 0x00040000L, 0x10040004L,0x00002000L, 0x10000000L, 0x00042004L, 0x10002004L,0x10042000L, 0x00002000L, 0x00000000L, 0x10000004L,0x00000004L, 0x10042004L, 0x00042000L, 0x10040000L,0x10040004L, 0x00040000L, 0x00002004L, 0x10002000L,0x10002004L, 0x00000004L, 0x10040000L, 0x00042000L,},{/* nibble 2 */0x41000000L, 0x01010040L, 0x00000040L, 0x41000040L,0x40010000L, 0x01000000L, 0x41000040L, 0x00010040L,0x01000040L, 0x00010000L, 0x01010000L, 0x40000000L,0x41010040L, 0x40000040L, 0x40000000L, 0x41010000L,0x00000000L, 0x40010000L, 0x01010040L, 0x00000040L,0x40000040L, 0x41010040L, 0x00010000L, 0x41000000L,0x41010000L, 0x01000040L, 0x40010040L, 0x01010000L,0x00010040L, 0x00000000L, 0x01000000L, 0x40010040L,0x01010040L, 0x00000040L, 0x40000000L, 0x00010000L,0x40000040L, 0x40010000L, 0x01010000L, 0x41000040L,0x00000000L, 0x01010040L, 0x00010040L, 0x41010000L,0x40010000L, 0x01000000L, 0x41010040L, 0x40000000L,0x40010040L, 0x41000000L, 0x01000000L, 0x41010040L,0x00010000L, 0x01000040L, 0x41000040L, 0x00010040L,0x01000040L, 0x00000000L, 0x41010000L, 0x40000040L,0x41000000L, 0x40010040L, 0x00000040L, 0x01010000L,},{/* nibble 3 */0x00100402L, 0x04000400L, 0x00000002L, 0x04100402L,0x00000000L, 0x04100000L, 0x04000402L, 0x00100002L,0x04100400L, 0x04000002L, 0x04000000L, 0x00000402L,0x04000002L, 0x00100402L, 0x00100000L, 0x04000000L,0x04100002L, 0x00100400L, 0x00000400L, 0x00000002L,0x00100400L, 0x04000402L, 0x04100000L, 0x00000400L,0x00000402L, 0x00000000L, 0x00100002L, 0x04100400L,0x04000400L, 0x04100002L, 0x04100402L, 0x00100000L,0x04100002L, 0x00000402L, 0x00100000L, 0x04000002L,0x00100400L, 0x04000400L, 0x00000002L, 0x04100000L,0x04000402L, 0x00000000L, 0x00000400L, 0x00100002L,0x00000000L, 0x04100002L, 0x04100400L, 0x00000400L,0x04000000L, 0x04100402L, 0x00100402L, 0x00100000L,0x04100402L, 0x00000002L, 0x04000400L, 0x00100402L,0x00100002L, 0x00100400L, 0x04100000L, 0x04000402L,0x00000402L, 0x04000000L, 0x04000002L, 0x04100400L,},{/* nibble 4 */0x02000000L, 0x00004000L, 0x00000100L, 0x02004108L,0x02004008L, 0x02000100L, 0x00004108L, 0x02004000L,0x00004000L, 0x00000008L, 0x02000008L, 0x00004100L,0x02000108L, 0x02004008L, 0x02004100L, 0x00000000L,0x00004100L, 0x02000000L, 0x00004008L, 0x00000108L,0x02000100L, 0x00004108L, 0x00000000L, 0x02000008L,0x00000008L, 0x02000108L, 0x02004108L, 0x00004008L,0x02004000L, 0x00000100L, 0x00000108L, 0x02004100L,0x02004100L, 0x02000108L, 0x00004008L, 0x02004000L,0x00004000L, 0x00000008L, 0x02000008L, 0x02000100L,0x02000000L, 0x00004100L, 0x02004108L, 0x00000000L,0x00004108L, 0x02000000L, 0x00000100L, 0x00004008L,0x02000108L, 0x00000100L, 0x00000000L, 0x02004108L,0x02004008L, 0x02004100L, 0x00000108L, 0x00004000L,0x00004100L, 0x02004008L, 0x02000100L, 0x00000108L,0x00000008L, 0x00004108L, 0x02004000L, 0x02000008L,},{/* nibble 5 */0x20000010L, 0x00080010L, 0x00000000L, 0x20080800L,0x00080010L, 0x00000800L, 0x20000810L, 0x00080000L,0x00000810L, 0x20080810L, 0x00080800L, 0x20000000L,0x20000800L, 0x20000010L, 0x20080000L, 0x00080810L,0x00080000L, 0x20000810L, 0x20080010L, 0x00000000L,0x00000800L, 0x00000010L, 0x20080800L, 0x20080010L,0x20080810L, 0x20080000L, 0x20000000L, 0x00000810L,0x00000010L, 0x00080800L, 0x00080810L, 0x20000800L,0x00000810L, 0x20000000L, 0x20000800L, 0x00080810L,0x20080800L, 0x00080010L, 0x00000000L, 0x20000800L,0x20000000L, 0x00000800L, 0x20080010L, 0x00080000L,0x00080010L, 0x20080810L, 0x00080800L, 0x00000010L,0x20080810L, 0x00080800L, 0x00080000L, 0x20000810L,0x20000010L, 0x20080000L, 0x00080810L, 0x00000000L,0x00000800L, 0x20000010L, 0x20000810L, 0x20080800L,0x20080000L, 0x00000810L, 0x00000010L, 0x20080010L,},{/* nibble 6 */0x00001000L, 0x00000080L, 0x00400080L, 0x00400001L,0x00401081L, 0x00001001L, 0x00001080L, 0x00000000L,0x00400000L, 0x00400081L, 0x00000081L, 0x00401000L,0x00000001L, 0x00401080L, 0x00401000L, 0x00000081L,0x00400081L, 0x00001000L, 0x00001001L, 0x00401081L,0x00000000L, 0x00400080L, 0x00400001L, 0x00001080L,0x00401001L, 0x00001081L, 0x00401080L, 0x00000001L,0x00001081L, 0x00401001L, 0x00000080L, 0x00400000L,0x00001081L, 0x00401000L, 0x00401001L, 0x00000081L,0x00001000L, 0x00000080L, 0x00400000L, 0x00401001L,0x00400081L, 0x00001081L, 0x00001080L, 0x00000000L,0x00000080L, 0x00400001L, 0x00000001L, 0x00400080L,0x00000000L, 0x00400081L, 0x00400080L, 0x00001080L,0x00000081L, 0x00001000L, 0x00401081L, 0x00400000L,0x00401080L, 0x00000001L, 0x00001001L, 0x00401081L,0x00400001L, 0x00401080L, 0x00401000L, 0x00001001L,},{/* nibble 7 */0x08200020L, 0x08208000L, 0x00008020L, 0x00000000L,0x08008000L, 0x00200020L, 0x08200000L, 0x08208020L,0x00000020L, 0x08000000L, 0x00208000L, 0x00008020L,0x00208020L, 0x08008020L, 0x08000020L, 0x08200000L,0x00008000L, 0x00208020L, 0x00200020L, 0x08008000L,0x08208020L, 0x08000020L, 0x00000000L, 0x00208000L,0x08000000L, 0x00200000L, 0x08008020L, 0x08200020L,0x00200000L, 0x00008000L, 0x08208000L, 0x00000020L,0x00200000L, 0x00008000L, 0x08000020L, 0x08208020L,0x00008020L, 0x08000000L, 0x00000000L, 0x00208000L,0x08200020L, 0x08008020L, 0x08008000L, 0x00200020L,0x08208000L, 0x00000020L, 0x00200020L, 0x08008000L,0x08208020L, 0x00200000L, 0x08200000L, 0x08000020L,0x00208000L, 0x00008020L, 0x08008020L, 0x08200000L,0x00000020L, 0x08208000L, 0x00208020L, 0x00000000L,0x08000000L, 0x08200020L, 0x00008000L, 0x00208020L}};static const DES_LONG skb[8][64]={{/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */0x00000000L,0x00000010L,0x20000000L,0x20000010L,0x00010000L,0x00010010L,0x20010000L,0x20010010L,0x00000800L,0x00000810L,0x20000800L,0x20000810L,0x00010800L,0x00010810L,0x20010800L,0x20010810L,0x00000020L,0x00000030L,0x20000020L,0x20000030L,0x00010020L,0x00010030L,0x20010020L,0x20010030L,0x00000820L,0x00000830L,0x20000820L,0x20000830L,0x00010820L,0x00010830L,0x20010820L,0x20010830L,0x00080000L,0x00080010L,0x20080000L,0x20080010L,0x00090000L,0x00090010L,0x20090000L,0x20090010L,0x00080800L,0x00080810L,0x20080800L,0x20080810L,0x00090800L,0x00090810L,0x20090800L,0x20090810L,0x00080020L,0x00080030L,0x20080020L,0x20080030L,0x00090020L,0x00090030L,0x20090020L,0x20090030L,0x00080820L,0x00080830L,0x20080820L,0x20080830L,0x00090820L,0x00090830L,0x20090820L,0x20090830L,},{/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */0x00000000L,0x02000000L,0x00002000L,0x02002000L,0x00200000L,0x02200000L,0x00202000L,0x02202000L,0x00000004L,0x02000004L,0x00002004L,0x02002004L,0x00200004L,0x02200004L,0x00202004L,0x02202004L,0x00000400L,0x02000400L,0x00002400L,0x02002400L,0x00200400L,0x02200400L,0x00202400L,0x02202400L,0x00000404L,0x02000404L,0x00002404L,0x02002404L,0x00200404L,0x02200404L,0x00202404L,0x02202404L,0x10000000L,0x12000000L,0x10002000L,0x12002000L,0x10200000L,0x12200000L,0x10202000L,0x12202000L,0x10000004L,0x12000004L,0x10002004L,0x12002004L,0x10200004L,0x12200004L,0x10202004L,0x12202004L,0x10000400L,0x12000400L,0x10002400L,0x12002400L,0x10200400L,0x12200400L,0x10202400L,0x12202400L,0x10000404L,0x12000404L,0x10002404L,0x12002404L,0x10200404L,0x12200404L,0x10202404L,0x12202404L,},{/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */0x00000000L,0x00000001L,0x00040000L,0x00040001L,0x01000000L,0x01000001L,0x01040000L,0x01040001L,0x00000002L,0x00000003L,0x00040002L,0x00040003L,0x01000002L,0x01000003L,0x01040002L,0x01040003L,0x00000200L,0x00000201L,0x00040200L,0x00040201L,0x01000200L,0x01000201L,0x01040200L,0x01040201L,0x00000202L,0x00000203L,0x00040202L,0x00040203L,0x01000202L,0x01000203L,0x01040202L,0x01040203L,0x08000000L,0x08000001L,0x08040000L,0x08040001L,0x09000000L,0x09000001L,0x09040000L,0x09040001L,0x08000002L,0x08000003L,0x08040002L,0x08040003L,0x09000002L,0x09000003L,0x09040002L,0x09040003L,0x08000200L,0x08000201L,0x08040200L,0x08040201L,0x09000200L,0x09000201L,0x09040200L,0x09040201L,0x08000202L,0x08000203L,0x08040202L,0x08040203L,0x09000202L,0x09000203L,0x09040202L,0x09040203L,},{/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */0x00000000L,0x00100000L,0x00000100L,0x00100100L,0x00000008L,0x00100008L,0x00000108L,0x00100108L,0x00001000L,0x00101000L,0x00001100L,0x00101100L,0x00001008L,0x00101008L,0x00001108L,0x00101108L,0x04000000L,0x04100000L,0x04000100L,0x04100100L,0x04000008L,0x04100008L,0x04000108L,0x04100108L,0x04001000L,0x04101000L,0x04001100L,0x04101100L,0x04001008L,0x04101008L,0x04001108L,0x04101108L,0x00020000L,0x00120000L,0x00020100L,0x00120100L,0x00020008L,0x00120008L,0x00020108L,0x00120108L,0x00021000L,0x00121000L,0x00021100L,0x00121100L,0x00021008L,0x00121008L,0x00021108L,0x00121108L,0x04020000L,0x04120000L,0x04020100L,0x04120100L,0x04020008L,0x04120008L,0x04020108L,0x04120108L,0x04021000L,0x04121000L,0x04021100L,0x04121100L,0x04021008L,0x04121008L,0x04021108L,0x04121108L,},{/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */0x00000000L,0x10000000L,0x00010000L,0x10010000L,0x00000004L,0x10000004L,0x00010004L,0x10010004L,0x20000000L,0x30000000L,0x20010000L,0x30010000L,0x20000004L,0x30000004L,0x20010004L,0x30010004L,0x00100000L,0x10100000L,0x00110000L,0x10110000L,0x00100004L,0x10100004L,0x00110004L,0x10110004L,0x20100000L,0x30100000L,0x20110000L,0x30110000L,0x20100004L,0x30100004L,0x20110004L,0x30110004L,0x00001000L,0x10001000L,0x00011000L,0x10011000L,0x00001004L,0x10001004L,0x00011004L,0x10011004L,0x20001000L,0x30001000L,0x20011000L,0x30011000L,0x20001004L,0x30001004L,0x20011004L,0x30011004L,0x00101000L,0x10101000L,0x00111000L,0x10111000L,0x00101004L,0x10101004L,0x00111004L,0x10111004L,0x20101000L,0x30101000L,0x20111000L,0x30111000L,0x20101004L,0x30101004L,0x20111004L,0x30111004L,},{/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */0x00000000L,0x08000000L,0x00000008L,0x08000008L,0x00000400L,0x08000400L,0x00000408L,0x08000408L,0x00020000L,0x08020000L,0x00020008L,0x08020008L,0x00020400L,0x08020400L,0x00020408L,0x08020408L,0x00000001L,0x08000001L,0x00000009L,0x08000009L,0x00000401L,0x08000401L,0x00000409L,0x08000409L,0x00020001L,0x08020001L,0x00020009L,0x08020009L,0x00020401L,0x08020401L,0x00020409L,0x08020409L,0x02000000L,0x0A000000L,0x02000008L,0x0A000008L,0x02000400L,0x0A000400L,0x02000408L,0x0A000408L,0x02020000L,0x0A020000L,0x02020008L,0x0A020008L,0x02020400L,0x0A020400L,0x02020408L,0x0A020408L,0x02000001L,0x0A000001L,0x02000009L,0x0A000009L,0x02000401L,0x0A000401L,0x02000409L,0x0A000409L,0x02020001L,0x0A020001L,0x02020009L,0x0A020009L,0x02020401L,0x0A020401L,0x02020409L,0x0A020409L,},{/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */0x00000000L,0x00000100L,0x00080000L,0x00080100L,

⌨️ 快捷键说明

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