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

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

?? format.c

?? 斯坦福大學密碼學家Boneh的基于身份的公鑰密碼系統
?? C
字號:
/*Copyright (C) 2001 Benjamin Lynn (blynn@cs.stanford.edu)See LICENSE for license*/#include <string.h>#include "ibe.h"#include "format.h"#include "crypto.h"enum {    crypt_buf_size = 100};char *FMT_get_year(void){    time_t tt;    struct tm *tmt;    char *s;    int year;    time(&tt);    tmt = gmtime(&tt);    s = (char *) malloc(5);    year = 1900 + tmt->tm_year;    if (year > 9999) year = 9999;    //Y10K bug: need to fix eventually =]    sprintf(s, "%d", year);    return s;}char *FMT_make_id(char *addr, char *subject, params_t params){    char *year = FMT_get_year();    int i;    char *s;    if (!addr) {	return NULL;    }    //XXX: yet another magic number    i = strlen(addr) + strlen(IBE_system(params)) + 1000;    if (subject) i += strlen(subject);    s = (char *) malloc(i);    i = sprintf(s, "purpose=email&date=%s&id=%s&", year, addr);    if (subject) {	i += sprintf(&s[i], "subject=%s&", subject);    }    sprintf(&s[i], "system=%s", IBE_system(params));    free(year);    return s;}static void advance_to(char *s, FILE *infp){    char line[crypt_buf_size];    for (;;) {	fgets(line, crypt_buf_size, infp);	if (feof(infp)) break;	if (!strncmp(s, line, strlen(s))) break;    }}static void mime_put(byte_string_t bs, FILE *outfp){    char out[1024];    int outl;    int i, l;    EVP_ENCODE_CTX ctx;    EVP_EncodeInit(&ctx);    for (i=0; i<bs->len; i+=l) {	if (i+crypt_buf_size > bs->len) {	    l = bs->len - i;	} else {	    l = crypt_buf_size;	}	EVP_EncodeUpdate(&ctx,out,&outl,&bs->data[i],l);	fwrite(out, 1, outl, outfp);    }    EVP_EncodeFinal(&ctx,out,&outl);    fwrite(out, 1, outl, outfp);}static void mime_get(byte_string_t bs, FILE *infp){    char line[crypt_buf_size];    int l, l2;    EVP_ENCODE_CTX mime;    byte_string_init(bs, 1024);    EVP_DecodeInit(&mime);    l = 0;    for (;;) {	fgets(line, crypt_buf_size, infp);	if (feof(infp)) break;	//break on blank line = "\n" or "\r\n"	if (strlen(line) <= 2) break;	EVP_DecodeUpdate(&mime, &bs->data[l], &l2, (unsigned char *) line, strlen(line));	l += l2;	if (bs->len - l < crypt_buf_size) {	    byte_string_reinit(bs, bs->len * 2);	}    }    EVP_DecodeFinal(&mime, &bs->data[l], &l2);    byte_string_reinit(bs, l + l2);}void FMT_encrypt_stream_array(char **id, int idcount,	FILE *infp, FILE *outfp, params_t params){    byte_string_t U, K;    byte_string_t *V;    unsigned char in[crypt_buf_size];    unsigned char *out;    int inl, outl;    crypto_ctx_t ctx;    EVP_ENCODE_CTX mime;    unsigned char data[1024];    int i;    int count;    out = (unsigned char *) alloca(crypt_buf_size + crypto_block_size());    V = (byte_string_t *) alloca(sizeof(byte_string_t) * idcount);    fprintf(outfp, "\n-----BEGIN IBE-----\n");    crypto_generate_key(K);    IBE_hide_key_array(U, V, id, idcount, K, params);    fprintf(outfp, "\nU:\n");    mime_put(U, outfp);    fprintf(outfp, "\n");    for (i=0; i<idcount; i++) {	fprintf(outfp, "\nID:\n");	fprintf(outfp, "%s\n", id[i]);	fprintf(outfp, "\nV:\n");	mime_put(V[i], outfp);	fprintf(outfp, "\n");	byte_string_clear(V[i]);    }    fprintf(outfp, "\nW:\n");    crypto_ctx_init(ctx);    crypto_encrypt_init(ctx, K);    EVP_EncodeInit(&mime);    for (;;) {	inl = fread(in, 1, crypt_buf_size, infp);	if (inl < 0) {	    fprintf(stderr, "read error\n");	    exit(1);	}	crypto_encrypt_update(ctx, out, &outl, in, inl);	EVP_EncodeUpdate(&mime, data, &count, out, outl);	fwrite(data, 1, count, outfp);	if (feof(infp)) break;    }    crypto_encrypt_final(ctx, out, &outl);    crypto_ctx_clear(ctx);    EVP_EncodeUpdate(&mime, data, &count, out, outl);    fwrite(data, 1, count, outfp);    EVP_EncodeFinal(&mime, data, &count);    fwrite(data, 1, count, outfp);    fprintf(outfp, "\n-----END IBE-----\n");    byte_string_clear(K);    byte_string_clear(U);}void FMT_encrypt_stream(char *id, FILE *infp, FILE *outfp, params_t params){    FMT_encrypt_stream_array(&id, 1, infp, outfp, params);}int FMT_decrypt_stream(char *id, byte_string_t key,	FILE *infp, FILE *outfp, params_t params){    byte_string_t U;    byte_string_t K, V;    crypto_ctx_t ctx;    unsigned char in[crypt_buf_size];    unsigned char out[200]; //TODO: what should this be?    int inl, outl;    unsigned char data[1024];    int count;    EVP_ENCODE_CTX mime;    int result = 0;    char *s, slen;    int status;    advance_to("-----BEGIN IBE-----", infp);    advance_to("U:", infp);    mime_get(U, infp);    slen = strlen(id) + 2;    s = (char *) alloca(sizeof(char) * slen);    for(;;) {	advance_to("ID:", infp);	if (feof(infp)) {	    //ID not found	    return 0;	}	fgets(s, slen, infp);	if (s[strlen(id)] == '\n') { //correct length?	    if (!strncmp(s, id, strlen(id))) { //compares?		break; //email has ID for us	    }	}    }    advance_to("V:", infp);    mime_get(V, infp);    status = IBE_reveal_key(K, U, V, key, params);    if (status != 1) {	fprintf(outfp, "WARNING: KMAC MISMATCH. INVALID CIPHERTEXT!\n");	byte_string_clear(V);	byte_string_clear(K);	return result;    }    advance_to("W:", infp);    crypto_ctx_init(ctx);    crypto_decrypt_init(ctx, K);    EVP_DecodeInit(&mime);    for (;;) {	fgets(in, crypt_buf_size, infp);	inl = strlen(in);	if (inl < 0) {	    fprintf(stderr, "read error\n");	    exit(1);	}	if (inl < 2) break;	EVP_DecodeUpdate(&mime, data, &count, in, inl);	crypto_decrypt_update(ctx, out, &outl, data, count);	fwrite(out, 1, outl, outfp);    }    EVP_DecodeFinal(&mime, data, &count);    crypto_decrypt_update(ctx, out, &outl, data, count);    fwrite(out, 1, outl, outfp);    if (1 != crypto_decrypt_final(ctx, out, &outl)) {	fprintf(outfp, "crypto_decrypt_final() failed!\n");    } else {	result = 1;    }    fwrite(out, 1, outl, outfp);    crypto_ctx_clear(ctx);    byte_string_clear(K);    byte_string_clear(U);    byte_string_clear(V);    return result;}int FMT_crypt_save_fp(FILE *outfp, byte_string_t bs, const char *password){    byte_string_t K, W;    byte_string_set(K, password);    crypto_encrypt(W, bs, K);    fprintf(outfp, "\nW:\n");    mime_put(W, outfp);    byte_string_clear(K);    byte_string_clear(W);    return 1;}int FMT_crypt_save(const char *fname, byte_string_t bs, const char *password){    FILE *fp;    int status;    fp = fopen(fname, "w");    if (!fp) return 0;    status = FMT_crypt_save_fp(fp, bs, password);    fclose(fp);    return status;}int FMT_crypt_load(const char *fname, byte_string_t bs, const char *password){    FILE *infp;    byte_string_t K, W;    int result = 0;    infp = fopen(fname, "r");    if (!infp) return 0;    byte_string_set(K, password);    advance_to("W:", infp);    mime_get(W, infp);    if (1 != crypto_decrypt(bs, W, K)) {	fprintf(stderr, "crypto_decrypt() failed!\n");    } else {	result = 1;    }    fclose(infp);    byte_string_clear(K);    byte_string_clear(W);    return result;}int FMT_load_byte_string(const char *filename, byte_string_t bs){    FILE *fp;    fp = fopen(filename, "r");    if (!fp) return 0;    mime_get(bs, fp);    fclose(fp);    return 1;}int FMT_save_byte_string(const char *filename, byte_string_t bs){    FILE *fp;    fp = fopen(filename, "w");    if (!fp) return 0;    mime_put(bs, fp);    fclose(fp);    return 1;}int FMT_load_raw_byte_string(byte_string_t bs, char *file)//load a raw byte string from a file{    int max = 1024;    int len = 0;    FILE *fp;    fp = fopen(file, "r");    if (!fp) {	return 0;    }    byte_string_init(bs, max);    for(;;) {	len += fread(&bs->data[len], 1, max - len, fp);	if (len == max) {	    max *= 2;	    byte_string_reinit(bs, max);	} else {	    if (!feof(fp)) {		fclose(fp);		byte_string_clear(bs);		return 0;	    }	    fclose(fp);	    break;	}    }    byte_string_reinit(bs, len);    return 1;}int FMT_split_master(char **fname, byte_string_t master, int t, int n, params_t params){    int i;    byte_string_t mshare[n];    int result = 1;    IBE_split_master(mshare, master, t, n, params);    for (i=0; i<n; i++) {	if (1 != FMT_save_byte_string(fname[i], mshare[i])) {	    fprintf(stderr, "error writing to %s\n", fname[i]);	    result = 0;	    break;	}    }    for (i=0; i<n; i++) {	byte_string_clear(mshare[i]);    }    return result;}int FMT_construct_master(byte_string_t master,	char **fname, int t, params_t params){    int i;    byte_string_t mshare[t];    for (i=0; i<t; i++) {	if (1 != FMT_load_byte_string(fname[i], mshare[i])) {	    fprintf(stderr, "error loading %s\n", fname[i]);	    return 0;	}    }    IBE_construct_master(master, mshare, params);    for (i=0; i<t; i++) {	byte_string_clear(mshare[i]);    }    return 1;}int FMT_save_params(char *filename, params_t params){    int result;    byte_string_t bs;    IBE_serialize_params(bs, params);    result = FMT_save_byte_string(filename, bs);    byte_string_clear(bs);    return result;}int FMT_load_params(params_t params, char *filename){    byte_string_t bs;    int result;    result = FMT_load_byte_string(filename, bs);    if (!result) {	return 0;    }    result = IBE_deserialize_params(params, bs);    byte_string_clear(bs);    return result;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久99精品| 国产成人av影院| 91免费观看国产| 国产欧美日韩麻豆91| 蜜桃一区二区三区在线观看| 91.com视频| 亚瑟在线精品视频| 不卡的av网站| 中文字幕一区二区日韩精品绯色| 国产成人综合亚洲91猫咪| 欧美精品一区二区三区一线天视频 | 欧美sm极限捆绑bd| 老司机精品视频导航| 欧美人与性动xxxx| 婷婷综合久久一区二区三区| 欧美日韩成人综合| 日韩国产在线观看| 精品精品国产高清a毛片牛牛| 欧美a一区二区| 日韩一二三区不卡| 国产成人高清在线| 亚洲欧美日韩久久精品| 一本在线高清不卡dvd| 亚洲小说欧美激情另类| 色综合久久久网| 日精品一区二区| 精品sm捆绑视频| 成人午夜精品在线| 亚洲激情五月婷婷| 欧美丰满一区二区免费视频| 麻豆一区二区三| 久久综合九色综合97婷婷| 色一情一伦一子一伦一区| 亚洲成a人v欧美综合天堂下载| 在线成人免费观看| 国产主播一区二区三区| 一区二区三区欧美视频| 91麻豆精品国产91久久久久久久久| 亚洲精品精品亚洲| 欧美一级二级三级蜜桃| 成人午夜视频在线| 亚洲一区二区精品视频| 精品国产不卡一区二区三区| 国产剧情av麻豆香蕉精品| 国产精品国模大尺度视频| 欧美三级三级三级爽爽爽| 久久99国产精品免费| 亚洲色图欧洲色图婷婷| 日韩欧美在线一区二区三区| 91精品国产欧美日韩| 国产一区日韩二区欧美三区| 亚洲美女区一区| 精品久久久久久亚洲综合网| av在线一区二区三区| 日本va欧美va精品发布| 亚洲欧洲日产国码二区| 欧美一区二区三区婷婷月色 | 99久久99久久综合| 日韩精品亚洲专区| 国产精品毛片久久久久久| 欧美一区二区高清| 国产成人午夜精品5599 | 欧美乱妇15p| 国产成人亚洲综合色影视 | 国产精品久久久久一区| 欧美大片顶级少妇| 91网站在线观看视频| 国产一区二区主播在线| 亚洲国产cao| 国产精品国产自产拍高清av王其| 337p亚洲精品色噜噜狠狠| 91美女蜜桃在线| 国产综合久久久久久久久久久久| 日韩国产精品大片| 午夜伊人狠狠久久| 亚洲图片欧美色图| 亚洲综合激情另类小说区| 亚洲天堂2014| 亚洲一卡二卡三卡四卡无卡久久| 亚洲精品日产精品乱码不卡| 日韩美女视频19| 亚洲免费观看在线观看| 亚洲女性喷水在线观看一区| 亚洲人精品一区| 亚洲精品成a人| 一区二区三区精密机械公司| 一区二区三区在线观看视频| 亚洲曰韩产成在线| 亚洲国产一区二区三区青草影视 | 国产亚洲欧美日韩在线一区| 日本vs亚洲vs韩国一区三区| 激情图片小说一区| 国产二区国产一区在线观看| 国产精品1024| 91麻豆精东视频| 欧美日韩午夜精品| 91精品国产91久久久久久最新毛片 | 丝袜美腿成人在线| 日本伊人色综合网| 久久国产精品99精品国产| 黄色日韩三级电影| 成人福利视频在线| 色婷婷亚洲婷婷| 欧美一区二区女人| 久久久久国色av免费看影院| 综合亚洲深深色噜噜狠狠网站| 一个色妞综合视频在线观看| 蜜臀av一区二区在线观看| 国产一区二区在线观看视频| 91美女在线看| 91精品国产黑色紧身裤美女| 国产日产欧产精品推荐色| 亚洲欧美另类小说视频| 日韩vs国产vs欧美| 国产专区欧美精品| 日本久久一区二区三区| 91精品国产91久久久久久一区二区 | 欧美日韩中文精品| 精品久久久久久亚洲综合网| 亚洲欧美日韩一区二区| 日韩成人精品在线| 99久久精品费精品国产一区二区 | 日韩三级中文字幕| 中文字幕精品一区| 偷拍与自拍一区| 成人午夜免费电影| 欧美高清性hdvideosex| 中文字幕国产一区| 日本成人在线视频网站| av电影在线观看一区| 日韩一区二区在线观看| 中文字幕一区免费在线观看| 精品在线免费视频| 色综合天天综合网国产成人综合天| 日韩精品一区二区三区四区| 亚洲激情在线激情| 国产成人在线视频网址| 91精品一区二区三区久久久久久 | 精品sm捆绑视频| 日日夜夜免费精品视频| 99久久99久久精品国产片果冻| 精品国产不卡一区二区三区| 亚洲成人一区在线| 99九九99九九九视频精品| xfplay精品久久| 日本亚洲视频在线| 欧美亚洲自拍偷拍| 日韩毛片一二三区| 成人免费福利片| 久久久三级国产网站| 日本va欧美va精品发布| 欧美日韩一区二区三区在线| 18成人在线视频| 成人av在线资源网站| 国产视频在线观看一区二区三区| 免费看日韩精品| 国产精品久久久久一区二区三区 | 91一区一区三区| 国产精品理伦片| 成人免费看片app下载| 精品免费日韩av| 麻豆成人91精品二区三区| 91精品久久久久久久91蜜桃| 亚洲高清视频中文字幕| 欧美日本在线视频| 亚洲午夜精品网| 在线看日本不卡| 一区二区视频免费在线观看| 91福利在线免费观看| 亚洲一区二区三区激情| 欧美色网一区二区| 日日夜夜精品视频天天综合网| 欧美日韩国产高清一区二区 | 337p粉嫩大胆噜噜噜噜噜91av| 久久国产三级精品| 欧美精品一区二区三区一线天视频| 国产真实乱偷精品视频免| 久久人人爽人人爽| 国产成人一区二区精品非洲| 国产精品亲子伦对白| 成人开心网精品视频| 亚洲欧美日韩久久精品| 欧美视频一区二区三区在线观看| 亚洲在线视频免费观看| 欧美福利一区二区| 日本不卡的三区四区五区| 欧美精品一区二区三区四区| 高清在线不卡av| 国产精品视频九色porn| 成人精品小蝌蚪| 亚洲图片欧美激情| 97se亚洲国产综合自在线不卡| 亚洲国产精品一区二区www| 欧美亚洲动漫另类| 亚洲欧美一区二区不卡| 欧美美女视频在线观看| 美日韩黄色大片| 日韩欧美一级精品久久| 成人午夜又粗又硬又大| 日韩毛片一二三区|