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

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

?? crypt_md5.c

?? 代理服務器 squid-2.6.STABLE16
?? C
字號:
/* * Shamelessly stolen from linux-pam, and adopted to work with * OpenSSL md5 implementation and any magic string * * Origin2: md5_crypt.c,v 1.1.1.1 2000/01/03 17:34:46 gafton Exp * * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * <phk@login.dknet.dk> wrote this file.  As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp * ---------------------------------------------------------------------------- * * Origin: Id: crypt.c,v 1.3 1995/05/30 05:42:22 rgrimes Exp * */#include <string.h>#include <stdio.h>#include "config.h"#include "md5.h"#include "crypt_md5.h"static unsigned char itoa64[] =	/* 0 ... 63 => ascii - 64 */    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";static void md5to64(char *s, unsigned long v, int n){    while (--n >= 0) {	*s++ = itoa64[v & 0x3f];	v >>= 6;    }}/* * MD5 hash a password * * Use MD5 for what it is best at... * * If salt begins with $ then it is assumed to be on the form *   $magic$salt$... * If not the normal UNIX magic $1$ is used. */char *crypt_md5(const char *pw, const char *salt){    const char *magic = "$1$";    int magiclen = 3;    static char passwd[120], *p;    static const char *sp, *ep;    unsigned char final[16];    int sl, pl, i, j;    MD5_CTX ctx, ctx1;    unsigned long l;    if (*salt == '$') {	magic = salt++;	while(*salt && *salt != '$')	    salt++;	if (*salt == '$') {	    salt++;	    magiclen = salt - magic;	} else {	    salt = magic;	    magic = "$1$";	}    }    /* Refine the Salt first */    sp = salt;    /* It stops at the first '$', max 8 chars */    for (ep = sp; *ep && *ep != '$' && ep < (sp + 8); ep++)	continue;    /* get the length of the true salt */    sl = ep - sp;    MD5Init(&ctx);    /* The password first, since that is what is most unknown */    MD5Update(&ctx, (unsigned const char *) pw, strlen(pw));    /* Then our magic string */    MD5Update(&ctx, (unsigned const char *) magic, magiclen);    /* Then the raw salt */    MD5Update(&ctx, (unsigned const char *) sp, sl);    /* Then just as many characters of the MD5(pw,salt,pw) */    MD5Init(&ctx1);    MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));    MD5Update(&ctx1, (unsigned const char *) sp, sl);    MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));    MD5Final(final, &ctx1);    for (pl = strlen(pw); pl > 0; pl -= 16)	MD5Update(&ctx, (unsigned const char *) final, pl > 16 ? 16 : pl);    /* Don't leave anything around in vm they could use. */    memset(final, 0, sizeof final);    /* Then something really weird... */    for (j = 0, i = strlen(pw); i; i >>= 1)	if (i & 1)	    MD5Update(&ctx, (unsigned const char *) final + j, 1);	else	    MD5Update(&ctx, (unsigned const char *) pw + j, 1);    /* Now make the output string */    memset(passwd, 0, sizeof(passwd));    strncat(passwd, magic, magiclen);    strncat(passwd, sp, sl);    strcat(passwd, "$");    MD5Final(final, &ctx);    /*     * and now, just to make sure things don't run too fast     * On a 60 Mhz Pentium this takes 34 msec, so you would     * need 30 seconds to build a 1000 entry dictionary...     */    for (i = 0; i < 1000; i++) {	MD5Init(&ctx1);	if (i & 1)	    MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));	else	    MD5Update(&ctx1, (unsigned const char *) final, 16);	if (i % 3)	    MD5Update(&ctx1, (unsigned const char *) sp, sl);	if (i % 7)	    MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));	if (i & 1)	    MD5Update(&ctx1, (unsigned const char *) final, 16);	else	    MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));	MD5Final(final, &ctx1);    }    p = passwd + strlen(passwd);    l = (final[0] << 16) | (final[6] << 8) | final[12];    md5to64(p, l, 4);    p += 4;    l = (final[1] << 16) | (final[7] << 8) | final[13];    md5to64(p, l, 4);    p += 4;    l = (final[2] << 16) | (final[8] << 8) | final[14];    md5to64(p, l, 4);    p += 4;    l = (final[3] << 16) | (final[9] << 8) | final[15];    md5to64(p, l, 4);    p += 4;    l = (final[4] << 16) | (final[10] << 8) | final[5];    md5to64(p, l, 4);    p += 4;    l = final[11];    md5to64(p, l, 2);    p += 2;    *p = '\0';    /* Don't leave anything around in vm they could use. */    memset(final, 0, sizeof final);    return passwd;}/* Created by Ramon de Carvalho <ramondecarvalho@yahoo.com.br>   Refined by Rodrigo Rubira Branco <rodrigo@kernelhacking.com>*/char *md5sum(const char *s){   static unsigned char digest[16];   MD5_CTX ctx;   int idx;   static char sum[33];   memset(digest,0,16);   MD5Init(&ctx);   MD5Update(&ctx,(const unsigned char *)s,strlen(s));   MD5Final(digest,&ctx);   for(idx=0;idx<16;idx++)       sprintf(&sum[idx*2],"%02x",digest[idx]);   sum[32]='\0';   /* Don't leave anything around in vm they could use. */   memset(digest, 0, sizeof digest);   return sum;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区成人在线| 成人一道本在线| 国产不卡一区视频| 欧美精品日韩综合在线| 亚洲欧洲精品一区二区精品久久久| 亚洲国产成人av网| 91麻豆文化传媒在线观看| 精品精品国产高清a毛片牛牛| 一区二区三区精品视频在线| 国产精品一线二线三线| 日韩一区国产二区欧美三区| 亚洲午夜精品17c| 色综合中文字幕国产| 精品国产凹凸成av人导航| 午夜精品成人在线视频| 在线看一区二区| 国产精品美女久久久久久2018 | 亚洲欧美偷拍另类a∨色屁股| 久久精品国产亚洲a| 欧美一区二区视频在线观看2020| 有坂深雪av一区二区精品| 99这里只有精品| 综合精品久久久| 91视频免费观看| 亚洲欧美日韩中文播放 | 99久久精品久久久久久清纯| 2022国产精品视频| 国产乱色国产精品免费视频| 精品欧美乱码久久久久久1区2区| 日本亚洲欧美天堂免费| 日韩精品专区在线影院重磅| 免费亚洲电影在线| 精品奇米国产一区二区三区| 久久精品国产99国产精品| 欧美一区二区在线不卡| 久久99国产精品免费网站| 精品国产百合女同互慰| 国产精品456| 综合亚洲深深色噜噜狠狠网站| 91女人视频在线观看| 自拍偷拍国产精品| 在线免费视频一区二区| 五月天中文字幕一区二区| 69精品人人人人| 激情久久五月天| 国产精品日产欧美久久久久| 色综合色综合色综合色综合色综合 | 91视频91自| 一区二区免费在线| 欧美精品久久久久久久多人混战| 日本va欧美va欧美va精品| 26uuu精品一区二区在线观看| 国产999精品久久| 亚洲精品一二三| 日韩一级精品视频在线观看| 风间由美一区二区av101 | 麻豆freexxxx性91精品| 国产日韩欧美激情| 在线观看一区二区视频| 久久99精品国产| 亚洲视频在线一区二区| 欧美精三区欧美精三区| 韩国一区二区三区| 亚洲乱码国产乱码精品精可以看 | 欧美激情资源网| 国产亚洲一区二区三区在线观看| 国产aⅴ综合色| 婷婷国产v国产偷v亚洲高清| 久久午夜色播影院免费高清| 91免费看`日韩一区二区| 亚洲午夜电影网| 日本一区二区电影| 日韩午夜在线观看| 色欧美日韩亚洲| 国产成人鲁色资源国产91色综| 亚洲国产精品久久久久婷婷884| 久久久久国产免费免费| 7777精品伊人久久久大香线蕉最新版| 国产a精品视频| 久久99国产精品久久| 亚洲一区二区三区爽爽爽爽爽| 久久久久高清精品| 欧美一区二区三级| 91在线精品一区二区三区| 久久国产精品区| 日韩精彩视频在线观看| 亚洲精品视频在线看| 国产日产欧美一区| 精品国产制服丝袜高跟| 91精品国产色综合久久不卡蜜臀 | 国产伦精品一区二区三区视频青涩 | www..com久久爱| 国产精品自拍网站| 欧美aⅴ一区二区三区视频| 一级女性全黄久久生活片免费| 国产亚洲视频系列| 26uuu欧美| 久久久久亚洲蜜桃| 欧美mv日韩mv国产网站| 91精品欧美福利在线观看| 91久久免费观看| 色网综合在线观看| 高清国产午夜精品久久久久久| 国内偷窥港台综合视频在线播放| 青青国产91久久久久久| 日韩精品电影在线观看| 秋霞av亚洲一区二区三| 日韩国产欧美在线观看| 午夜欧美视频在线观看| 亚洲精品视频自拍| 亚洲色图.com| 亚洲欧美国产三级| 亚洲天堂免费在线观看视频| 一区免费观看视频| 国产亚洲制服色| 久久精品一二三| 国产精品国产自产拍高清av| 亚洲欧洲三级电影| 一区二区三区小说| 亚洲国产精品一区二区久久恐怖片| 亚洲午夜久久久久| 美女视频黄 久久| 国产在线播精品第三| 成人精品视频一区| 日本韩国精品在线| 欧美午夜不卡在线观看免费| 一本久道久久综合中文字幕| 精品国产乱码久久久久久老虎 | 亚洲美女区一区| 亚洲成人精品影院| 老司机精品视频在线| 国产suv精品一区二区6| 91在线视频在线| 欧美日韩精品一二三区| 欧美不卡123| 国产精品美女www爽爽爽| 亚洲永久精品大片| 精品在线一区二区三区| www.日韩在线| 欧美少妇xxx| 国产无一区二区| 一区二区理论电影在线观看| 久久99国产精品麻豆| 成人app网站| 日韩美女视频一区二区在线观看| 国产蜜臀97一区二区三区 | 亚洲视频一区二区在线| 午夜精品免费在线观看| 国产精品1024| 欧美日韩免费视频| 国产午夜精品久久久久久免费视| 伊人夜夜躁av伊人久久| 国模冰冰炮一区二区| 在线观看亚洲精品| 久久久精品欧美丰满| 亚洲第一主播视频| 成人av在线影院| 日韩精品一区二区三区在线播放 | eeuss国产一区二区三区| 91精选在线观看| 中文字幕一区二区三区在线不卡| 日产精品久久久久久久性色| av电影在线观看一区| 精品国产欧美一区二区| 国产精品一区二区男女羞羞无遮挡 | 精品福利一区二区三区| 亚洲国产毛片aaaaa无费看 | 亚洲一区中文日韩| 国产精华液一区二区三区| 777久久久精品| 一区二区三区在线高清| 不卡电影一区二区三区| 久久色在线观看| 日本 国产 欧美色综合| 精品视频在线视频| 亚洲视频免费在线| 成人高清免费在线播放| 久久精品一区二区| 国产资源在线一区| 日韩一区二区在线观看| 日本欧美在线观看| 欧美日本免费一区二区三区| 亚洲综合一区二区| 色吧成人激情小说| 亚洲欧美日本韩国| 91视频免费看| 亚洲日本欧美天堂| 91久久精品网| 一区二区三区在线看| 在线观看日韩精品| 亚洲午夜久久久久久久久电影院| 色菇凉天天综合网| 亚洲最大成人综合| 久久久久久久久久久久久夜| 久久精品国产秦先生| 日韩欧美综合在线| 国产尤物一区二区在线 | 91精品久久久久久久91蜜桃| 亚洲电影第三页| 欧美一级精品大片|