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

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

?? crypto.c.txt

?? 當今
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
發信人: iceman ( 令狐小沖), 信區: Security 

標  題: crypto.c 

發信站: 武漢白云黃鶴站 (Fri Sep  4 11:27:07 1998) , 站內信件 

  

/*      crypto.c  - Cryptographic routines for PGP. 

  

  

        PGP: Pretty Good(tm) Privacy - public key cryptography for the masses. 

  

  

  

  

  

        (c) Copyright 1990-1992 by Philip Zimmermann.  All rights reserved. 

  

  

        The author assumes no liability for damages resulting from the use 

  

  

        of this software, even if the damage results from defects in this 

  

  

        software.  No warranty is expressed or implied. 

  

  

  

  

  

        All the source code Philip Zimmermann wrote for PGP is available for 

  

  

        free under the "Copyleft" General Public License from the Free 

  

  

        Software Foundation.  A copy of that license agreement is included in 

  

  

        the source release package of PGP.  Code developed by others for PGP 

  

  

        is also freely available.  Other code that has been incorporated into 

  

  

        PGP from other sources was either originally published in the public 

  

  

        domain or was used with permission from the various authors.  See the 

  

  

        PGP User's Guide for more complete information about licensing, 

  

  

        patent restrictions on certain algorithms, trademarks, copyrights, 

  

  

        and export controls. 

  

  

  

  

  

        Modified: 12-Nov-92 HAJK 

  

  

        Add FDL stuff for VAX/VMS local mode. 

  

  

        Reopen temporary files rather than create new version. 

  

  

  

  

  

*/ 

  

  

  

  

  

#include <ctype.h> 

  

  

#include <stdlib.h> 

  

  

#include <stdio.h> 

  

  

#include <string.h> 

  

  

#include <time.h> 

  

  

#ifdef __mips 

  

  

#include <fcntl.h> 

  

  

#else 

  

  

#include <sys/fcntl.h> 

  

  

#endif 

  

  

#ifndef __NeXT__ 

  

  

#include <unistd.h> 

  

  

#endif 

  

  

  

  

  

#include <sys/types.h> 

  

  

#include <sys/stat.h> 

  

  

  

  

  

#include "random.h" 

  

  

#include "crypto.h" 

  

  

#include "pgp.h" 

  

  

#include "mpilib.h" 

  

  

  

  

  

#ifndef S_IRUSR 

  

  

#define S_IRUSR S_IREAD 

  

  

#define S_IWUSR S_IWRITE 

  

  

#endif 

  

  

  

  

  

/* The kbhit() function: Determines if a key has been hit.  May not be 

  

  

   available in some implementations */ 

  

  

  

  

  

int kbhit( void ); 

  

  

int zipup(FILE *, FILE *); 

  

  

#ifdef  M_XENIX 

  

  

long time(); 

  

  

#endif 

  

  

  

  

  

word32 get_timestamp(word32 *timestamp) 

  

  

/*      Return current timestamp as a byte array in internal byteorder, 

  

  

        and as a 32-bit word */ 

  

  

{       word32 t; 

  

  

        t = time(NULL);    /* returns seconds since GMT 00:00 1 Jan 1970 */ 

  

  

  

  

  

#ifdef _MSC_VER 

  

  

#if (_MSC_VER == 700) 

  

  

        /*  Under MSDOS and MSC 7.0, time() returns elapsed time since 

  

  

         *  GMT 00:00 31 Dec 1899, instead of Unix's base date of 1 Jan 1970. 

  

  

         *  So we must subtract 70 years worth of seconds to fix this. 

  

  

         *  6/19/92  rgb 

  

  

        */ 

  

  

#define LEAP_DAYS       (((unsigned long)70L/4)+1) 

  

  

#define CALENDAR_KLUDGE ((unsigned long)86400L * (((unsigned long)365L * 70L) + 

  

  

LEAP_DAYS)) 

  

  

        t -= CALENDAR_KLUDGE; 

  

  

#endif 

  

  

#endif 

  

  

  

  

  

        t += timeshift; /* timeshift derived from TZFIX in config.pgp */ 

  

  

  

  

  

        if (timestamp != NULL) 

  

  

        {       /* first, fill array in external byte order: */ 

  

  

                *timestamp = t; 

  

  

        } 

  

  

  

  

  

        return(t);      /* return 32-bit timestamp integer */ 

  

  

}       /* get_timestamp */ 

  

  

  

  

  

/*--------------------------------------------------------------------------*/ 

  

  

  

  

  

#define IDEA_RANDOM 

  

  

#ifdef IDEA_RANDOM 

  

  

int strong_pseudorandom(byte *buf, int bufsize) 

  

  

/* 

  

  

        Reads IDEA random key and random number seed from file, cranks the 

  

  

        the seed through the idearand strong pseudorandom number generator, 

  

  

        and writes them back out.  This is used for generation of 

  

  

        cryptographically strong pseudorandom numbers.  This is mainly to 

  

  

        save the user the trouble of having to type in lengthy keyboard 

  

  

        sequences for generation of truly random numbers every time we want 

  

  

        to make a random session key.  This pseudorandom generator will only 

  

  

        work if the file containing the random seed exists and is not empty. 

  

  

        If it doesn't exist, it will be automatically created.  If it exists 

  

  

        and is empty or nearly empty, it will not be used. 

  

  

*/ 

  

  

{       char seedfile[MAX_PATH];        /* Random seed filename */ 

  

  

        FILE *f; 

  

  

        byte key[IDEAKEYSIZE]; 

  

  

        byte seed[IDEABLOCKSIZE]; 

  

  

        int i; 

  

  

        word32 tstamp; 

  

  

  

  

  

        strcpy(seedfile, getenv("HOME")); 

  

  

        strcat(seedfile, "/"); 

  

  

        strcat(seedfile, ".rand"); 

  

  

  

  

  

        if (access(seedfile, F_OK))     /* No seed file. Start one... */ 

  

  

        { 

  

  

            return -1; 

  

  

        } 

  

  

        else    /* seedfile DOES exist.  Open it and read it. */ 

  

  

        {       f = fopen(seedfile,"r");        /* open for reading binary */ 

  

  

                if (f==NULL)    /* did open fail? */ 

  

  

                        return(-1);     /* error: no random number seed file ava 

lable */ 

  

  

                /* read IDEA random generator key */ 

  

  

                if (fread(key,1,sizeof(key),f) < sizeof(key))   /* empty file? * 

  

  

  

                {       /* Empty or nearly empty file means don't use it. */ 

  

  

                        fclose(f); 

  

  

                        return(-1);     /* error: no random number seed file ava 

lable */ 

  

  

                } 

  

  

                else 

  

  

                        fread(seed,1,sizeof(seed),f); /* read pseudorandom seed 

/ 

  

  

                fclose(f); 

  

  

        }       /* seedfile exists */ 

  

  

  

  

  

  

  

  

        /* Initialize, key, and seed the IDEA pseudorandom generator: */ 

  

  

        get_timestamp(&tstamp); /* timestamp points to tstamp */ 

  

  

        init_idearand(key, seed, tstamp); 

  

  

  

  

  

        /* Note that the seed will be cycled thru IDEA before use */ 

  

  

  

  

  

        /* Now fill the user's buffer with gobbledygook... */ 

  

  

        while (bufsize--) 

  

  

                *buf++ = idearand() ^ randombyte(); 

  

  

  

  

  

        /* now cover up evidence of what user got */ 

  

  

        for (i=1; i<sizeof(key); i++) 

  

  

                key[i] ^= idearand() ^ randombyte(); 

  

  

        for (i=0; i<sizeof(seed); i++) 

  

  

                seed[i] = idearand() ^ randombyte(); 

  

  

  

  

  

        close_idearand();       /* close IDEA random number generator */ 

  

  

  

  

  

        chmod(seedfile, S_IRUSR|S_IWUSR); 

  

  

        f = fopen(seedfile,"w");        /* open for writing binary */ 

  

  

        if (f==NULL)    /* did open fail? */ 

  

  

                return(-1);     /* error: no random number seed file available * 

  

  

  

#ifdef VMS 

  

  

        fseek (f, 0, SEEK_SET); 

  

  

#endif 

  

  

        /* Now at start of file again */ 

  

  

        fwrite(key,1,sizeof(key),f); 

  

  

        fwrite(seed,1,sizeof(seed),f); 

  

  

        fclose(f); 

  

  

        burn(key);              /* burn sensitive data on stack */ 

  

  

        burn(seed);             /* burn sensitive data on stack */ 

  

  

        return(0);      /* normal return */ 

  

  

}       /* strong_pseudorandom */ 

  

  

  

  

  

extern int randcount; 

  

  

  

  

  

int refresh_pseudorandom() 

  

  

{       char seedfile[MAX_PATH];        /* Random seed filename */ 

  

  

        FILE *f; 

  

  

        byte key[IDEAKEYSIZE]; 

  

  

        byte seed[IDEABLOCKSIZE]; 

  

  

        int i; 

  

  

        word32 tstamp; 

  

  

  

  

  

        capturecounter(); 

  

  

        if (randcount < 2*(sizeof(key) + sizeof(seed))) 

  

  

                return; 

  

  

  

  

  

        strcpy(seedfile, getenv("HOME")); 

  

  

        strcat(seedfile, "/"); 

  

  

        strcat(seedfile, ".rand"); 

  

  

  

  

  

        f = fopen(seedfile,"w");        /* open for writing binary */ 

  

  

        chmod(seedfile, S_IRUSR|S_IWUSR); 

  

  

        if (f==NULL)    /* failed to create seedfile */ 

  

  

                return(-1);     /* error: no random number seed file available * 

  

  

  

        fclose(f);      /* close new empty seed file */ 

  

  

        /* kickstart the generator with true random numbers */ 

  

  

        for (i=1; i<sizeof(key); i++) 

  

  

                key[i] ^= randombyte(); 

  

  

        for (i=0; i<sizeof(seed); i++) 

  

  

                seed[i] ^= randombyte(); 

  

  

  

  

  

        /* Initialize, key, and seed the IDEA pseudorandom generator: */ 

  

  

        get_timestamp(&tstamp); /* timestamp points to tstamp */ 

  

  

        init_idearand(key, seed, tstamp); 

  

  

  

  

  

        /* Note that the seed will be cycled thru IDEA before use */ 

  

  

  

  

  

  

  

  

        /* now cover up evidence of what user got */ 

  

  

        for (i=1; i<sizeof(key); i++) 

  

  

                key[i] ^= idearand() ^ randombyte(); 

  

  

        for (i=0; i<sizeof(seed); i++) 

  

  

                seed[i] = idearand() ^ randombyte(); 

  

  

  

  

  

        close_idearand();       /* close IDEA random number generator */ 

  

  

  

  

  

        f = fopen(seedfile,"w");        /* open for writing binary */ 

  

  

        if (f==NULL)    /* did open fail? */ 

  

  

                return(-1);     /* error: no random number seed file available * 

  

  

  

#ifdef VMS 

  

  

        fseek (f, 0, SEEK_SET); 

  

  

#endif 

  

  

        /* Now at start of file again */ 

  

  

        fwrite(key,1,sizeof(key),f); 

  

  

        fwrite(seed,1,sizeof(seed),f); 

  

  

        fclose(f); 

  

  

        burn(key);              /* burn sensitive data on stack */ 

  

  

        burn(seed);             /* burn sensitive data on stack */ 

  

  

        return(0);      /* normal return */ 

  

  

}       /* strong_pseudorandom */ 

  

  

  

  

  

int make_random_ideakey(byte key[16]) 

  

  

/*      Make a random IDEA key.  Returns its length (a constant). */ 

  

  

{       int count; 

  

  

  

  

  

        if (strong_pseudorandom(key, IDEAKEYSIZE) == 0) 

  

  

                return(IDEAKEYSIZE); 

  

  

  

  

  

        fprintf(stderr,PSTR("Preparing random session key...")); 

  

  

  

  

  

        randaccum(IDEAKEYSIZE*8); /* get some random key bits */ 

  

  

  

  

  

        count=0; 

  

  

        while (++count <= IDEAKEYSIZE) 

  

  

                key[count] = randombyte(); 

  

  

  

  

  

        return(IDEAKEYSIZE); 

  

  

  

  

  

}       /* make_random_ideakey */ 

  

  

#endif 

  

  

  

  

  

  

  

  

int init_idea_stream(byte* buf, byte *ideakey, boolean decryp, IDEAkey Z, word16 

 iv) 

  

  

/*      Use IDEA in cipher feedback (CFB) mode to encrypt or decrypt a file. 

  

  

        The encrypted material starts out with a 64-bit random prefix, which 

  

  

        serves as an encrypted random CFB initialization vector, and 

  

  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国欧美一区二区三区| 国产精品综合久久| 欧美精品 日韩| 99re这里只有精品首页| 成人免费毛片高清视频| 精品亚洲欧美一区| 精品制服美女丁香| 久国产精品韩国三级视频| 亚洲1区2区3区视频| 麻豆成人91精品二区三区| 日本成人在线看| 免费日本视频一区| 成人午夜av在线| 色天使久久综合网天天| 欧美日韩精品一区视频| 欧美一区二区高清| 国产欧美日韩一区二区三区在线观看 | 亚洲精品视频观看| 亚洲国产精品激情在线观看| 国产精品美女www爽爽爽| 国产精品福利av| 丝袜美腿成人在线| 久色婷婷小香蕉久久| 99国产精品国产精品久久| 欧美在线一区二区三区| 欧美一级一区二区| 亚洲美女偷拍久久| 激情小说亚洲一区| 国产精品综合久久| 欧美日韩久久久久久| 亚洲国产成人在线| 日产国产欧美视频一区精品| 99热国产精品| 国产欧美精品在线观看| 日韩电影在线一区| 欧美日韩一区不卡| 亚洲欧美日韩在线不卡| 黑人巨大精品欧美黑白配亚洲| 欧美日韩亚洲综合一区 | 国精产品一区一区三区mba桃花 | 亚洲精品国产一区二区精华液| 理论片日本一区| 欧美日韩午夜在线视频| 亚洲精品乱码久久久久久| 91香蕉视频mp4| 中文字幕一区二区三区精华液| 国产v综合v亚洲欧| 久久精品一区二区| 国产成人免费视频网站 | 国产精品一区一区| 精品国产不卡一区二区三区| 视频一区二区三区入口| 欧美伊人久久大香线蕉综合69| 国产欧美日本一区二区三区| 国产成人免费视频网站高清观看视频| 欧美性一二三区| 日韩黄色免费网站| 欧美精品一区二区三区蜜桃| 国产精品1区2区3区| 一区av在线播放| 3751色影院一区二区三区| 九九热在线视频观看这里只有精品| 久久这里只有精品视频网| 成人av电影在线播放| 免费成人在线影院| 国产拍欧美日韩视频二区| 国产高清在线精品| 亚洲成人久久影院| 精品入口麻豆88视频| 丁香婷婷综合激情五月色| 性久久久久久久| 中文字幕av资源一区| 欧美日韩国产高清一区二区| 美脚の诱脚舐め脚责91 | 97se狠狠狠综合亚洲狠狠| 免费观看一级欧美片| 亚洲国产欧美另类丝袜| 精品久久国产字幕高潮| 在线观看欧美精品| 欧美日韩午夜精品| 制服丝袜亚洲色图| 亚洲色图第一区| 福利91精品一区二区三区| 一区二区三区在线视频播放| 欧美v国产在线一区二区三区| 国产福利不卡视频| 久久av老司机精品网站导航| 日韩福利视频网| 亚洲成年人影院| 日韩毛片高清在线播放| 亚洲同性同志一二三专区| 久久久久久久综合| 国产亚洲自拍一区| 欧美精品一区二区三区高清aⅴ | 成人欧美一区二区三区1314| 国产欧美一区二区三区在线看蜜臀| 正在播放亚洲一区| 欧美精品三级日韩久久| 成人黄色777网| 99免费精品在线观看| 91论坛在线播放| 在线日韩一区二区| 91成人看片片| 欧美私人免费视频| 日韩视频国产视频| 日韩一区二区三区免费看| 日韩精品资源二区在线| 久久精品亚洲乱码伦伦中文| 亚洲视频 欧洲视频| 一卡二卡三卡日韩欧美| 视频一区视频二区中文| 日韩精品乱码av一区二区| 国产精品综合av一区二区国产馆| 成人综合婷婷国产精品久久| a亚洲天堂av| 欧美精品一级二级| 中文字幕一区av| 久久精品99国产精品| 欧美中文字幕一二三区视频| 精品久久久久久无| 日韩精品亚洲一区二区三区免费| 免费观看日韩电影| 在线亚洲免费视频| 国产精品久久毛片| 日韩精品一二三| 欧美精品第1页| 丝袜亚洲另类欧美综合| 91在线porny国产在线看| 国产一区二区三区综合| 天天免费综合色| 国产精品中文字幕欧美| 欧美一区三区四区| 亚洲视频精选在线| 亚洲成人福利片| 一区二区三区四区精品在线视频| 亚洲一区二区三区四区中文字幕 | 中文字幕一区二区三区不卡在线| 欧美成人video| 亚洲在线观看免费| 国产蜜臀97一区二区三区| 2021中文字幕一区亚洲| 一本久久精品一区二区| 91精品国产一区二区三区香蕉| 久久影院视频免费| 国产在线国偷精品免费看| fc2成人免费人成在线观看播放| 在线精品视频一区二区三四| 国产午夜精品在线观看| 亚洲丝袜精品丝袜在线| 婷婷久久综合九色综合绿巨人| 99精品视频在线免费观看| 成人免费视频app| 久久嫩草精品久久久精品一| www.亚洲国产| 日本视频一区二区三区| 一区二区三区蜜桃| 久久综合成人精品亚洲另类欧美| 亚洲男女毛片无遮挡| 国产精品国产三级国产a| 狠狠色综合播放一区二区| 国产伦精品一区二区三区视频青涩 | 亚洲综合激情另类小说区| 国产欧美va欧美不卡在线| 午夜成人免费电影| 国产欧美精品在线观看| 一区二区久久久| 欧美系列在线观看| aa级大片欧美| 日韩免费看的电影| 国内精品第一页| 久久久久国产成人精品亚洲午夜| av动漫一区二区| www.欧美精品一二区| 国产精品综合一区二区三区| 免费一级片91| 蜜桃视频一区二区三区在线观看 | 亚洲精品视频在线| 一区二区三区高清在线| 97精品视频在线观看自产线路二| 天天综合天天做天天综合| 成人午夜免费电影| 亚洲精品免费在线| 日韩精品国产欧美| 免费欧美日韩国产三级电影| 中文字幕不卡在线观看| 在线区一区二视频| 亚洲444eee在线观看| 精品精品国产高清a毛片牛牛| 免费观看久久久4p| 中文字幕一区二区三区不卡在线| 日韩免费福利电影在线观看| 色综合久久久久综合体桃花网| 国产成人在线网站| 国产欧美一区视频| 美女视频黄a大片欧美| 亚洲国产高清不卡| 色吧成人激情小说| 5月丁香婷婷综合| 日日摸夜夜添夜夜添亚洲女人| 欧美精品欧美精品系列|