亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
高清不卡一区二区| 亚洲久草在线视频| 狠狠色2019综合网| 国产日韩三级在线| 成人午夜电影小说| 国产精品成人免费在线| 欧美大胆人体bbbb| 国产激情一区二区三区四区| 中文字幕av一区 二区| av不卡在线观看| 视频一区二区三区中文字幕| 日韩视频免费直播| 99久久久精品| 午夜电影网亚洲视频| 久久免费视频色| 91精彩视频在线| 久久精品国产99| 亚洲综合图片区| 国产亚洲污的网站| 欧美喷潮久久久xxxxx| 国产精品99久久久| 男女性色大片免费观看一区二区| 欧美zozozo| 欧美综合视频在线观看| 国产一区二区中文字幕| 亚洲国产精品精华液网站| xnxx国产精品| 欧美日本一区二区三区四区| 丰满少妇在线播放bd日韩电影| 午夜精品视频在线观看| 亚洲欧美一区二区三区极速播放| 欧美电视剧免费全集观看| 在线中文字幕一区二区| 国产91对白在线观看九色| 麻豆精品在线观看| 亚洲成人av在线电影| 亚洲精品你懂的| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美喷水一区二区| 欧美日韩免费观看一区二区三区| 国产一区二区网址| 久久er99精品| 国产毛片精品视频| 国产老妇另类xxxxx| 国产一区二区中文字幕| 狠狠色丁香久久婷婷综合_中| 蜜桃一区二区三区在线观看| 天堂成人免费av电影一区| 亚洲18女电影在线观看| 五月激情综合色| 精东粉嫩av免费一区二区三区| 久久超级碰视频| 国产不卡视频一区二区三区| 欧美一级在线免费| 宅男在线国产精品| 91精品黄色片免费大全| www成人在线观看| 国产精品国产三级国产| 亚洲精品成人悠悠色影视| 五月开心婷婷久久| 狠狠色丁香婷婷综合久久片| 成人免费观看av| 欧美电影影音先锋| 中文字幕久久午夜不卡| 图片区小说区国产精品视频| 国产九色精品成人porny| 99精品视频在线观看免费| 欧美日韩激情一区二区| 国产日韩一级二级三级| 亚洲成人先锋电影| 国产成人av影院| 欧美一区二区网站| 综合网在线视频| 精品中文字幕一区二区小辣椒| 成人影视亚洲图片在线| 日韩一区二区电影网| 一级中文字幕一区二区| 成人免费黄色在线| 精品免费日韩av| 婷婷六月综合亚洲| 91色乱码一区二区三区| 亚洲一区视频在线观看视频| 精品在线免费视频| 日韩一区二区三区在线观看| 亚洲午夜激情网站| 色噜噜久久综合| 一区二区免费在线| 91网上在线视频| 亚洲日本一区二区三区| aaa国产一区| 亚洲欧美电影一区二区| 91影视在线播放| 一区二区三区小说| 欧美三日本三级三级在线播放| 亚洲男人的天堂在线观看| 色噜噜狠狠成人网p站| 亚洲一区二区欧美激情| 678五月天丁香亚洲综合网| 免费在线视频一区| 日韩视频一区在线观看| 美女视频黄 久久| 精品国产乱码久久久久久牛牛| 免费高清不卡av| 国产精品色哟哟| 色狠狠av一区二区三区| 亚洲国产中文字幕在线视频综合| 91国产免费看| 极品少妇xxxx精品少妇| 国产人成亚洲第一网站在线播放| av激情亚洲男人天堂| 日韩高清不卡在线| 国产丝袜美腿一区二区三区| 在线观看欧美精品| 久久电影网电视剧免费观看| 久久蜜桃一区二区| 欧美做爰猛烈大尺度电影无法无天| 丝袜亚洲另类欧美综合| 国产精品天美传媒沈樵| 91精品国产福利| 成人av电影在线观看| 美腿丝袜亚洲三区| 亚洲一区二区三区爽爽爽爽爽| 国产精品伦理在线| 日韩精品一区二区三区视频播放| 99国产欧美另类久久久精品| 国内精品在线播放| 日韩高清一级片| 亚洲一区二区在线观看视频| 国产亚洲短视频| 精品久久久久久亚洲综合网| 欧美色爱综合网| 色综合中文字幕国产 | 欧美性淫爽ww久久久久无| 国产成人一区在线| 国产一区二区三区在线观看免费| 日本系列欧美系列| 蜜桃视频一区二区三区在线观看| 亚洲国产成人91porn| 亚洲日本成人在线观看| 欧美激情综合五月色丁香| 欧美一级二级三级乱码| 91精品国产黑色紧身裤美女| 欧美日韩二区三区| 日韩精品一区国产麻豆| 久久一区二区三区四区| 国产日本欧美一区二区| 国产日产欧产精品推荐色| 国产欧美一区二区精品婷婷| 久久久国产精品午夜一区ai换脸| 精品国产乱码久久久久久老虎| 91精品国产色综合久久| 精品免费国产一区二区三区四区| 欧美www视频| 国产欧美一区二区精品性| 自拍偷在线精品自拍偷无码专区| 亚洲人成在线观看一区二区| 曰韩精品一区二区| 视频在线观看一区| 国产在线视视频有精品| 99久久精品99国产精品| 欧美日韩欧美一区二区| 精品国产青草久久久久福利| 国产精品日日摸夜夜摸av| 一二三区精品视频| 国产在线播放一区二区三区| 色综合一个色综合亚洲| 欧美精品日日鲁夜夜添| 久久精品人人爽人人爽| 伊人色综合久久天天| 国内精品不卡在线| 欧美高清性hdvideosex| 中文字幕亚洲精品在线观看| av激情成人网| 日韩欧美一区二区久久婷婷| 日本一区二区成人| 麻豆91在线看| 色婷婷av一区| 国产午夜精品久久久久久免费视 | www.久久久久久久久| 日韩欧美国产一区二区在线播放| 亚洲图片另类小说| 国产成人精品三级麻豆| 久久婷婷国产综合国色天香| 久久精品国产在热久久| 欧美一区二区三区四区视频 | 午夜日韩在线观看| 91原创在线视频| 国产精品国产三级国产| av不卡一区二区三区| 国产欧美视频一区二区三区| 蜜臀va亚洲va欧美va天堂| 欧美丝袜丝nylons| 亚洲va欧美va人人爽| 国产亚洲精品aa午夜观看| 国产在线播放一区三区四| 欧美电影免费观看高清完整版在线 | 中文字幕va一区二区三区| gogo大胆日本视频一区| 国产精品久久久久影院色老大| 国产黄人亚洲片|