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

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

?? dhdemo.c

?? 利用c++的 文件加密設計 可以運行 但是沒有詳細的 說明
?? C
字號:
/* DHDEMO.C - demonstration program for Diffie-Hellman extensions to              RSAREF *//* Copyright (C) 1993 RSA Laboratories, a division of RSA Data   Security, Inc. All rights reserved. */#include <stdio.h>#include <string.h>#include <stdlib.h>#include "global.h"#include "rsaref.h"int main PROTO_LIST ((int, char **));static int SetOptions PROTO_LIST ((int, char **));static void InitRandomStruct PROTO_LIST ((R_RANDOM_STRUCT *));static void DoSetupAgreement PROTO_LIST ((R_RANDOM_STRUCT *));static void DoComputeAgreedKey PROTO_LIST ((void));static void DoGenerateParams PROTO_LIST ((R_RANDOM_STRUCT *));static void WriteParams2 PROTO_LIST ((void));static void WriteBigInteger PROTO_LIST  ((FILE *, unsigned char *, unsigned int));static int ReadBlock PROTO_LIST  ((unsigned char *, unsigned int *, unsigned int, char *));static int WriteBlock PROTO_LIST ((unsigned char *, unsigned int, char *));static int GetParams PROTO_LIST ((R_DH_PARAMS **, char *));static void PrintMessage PROTO_LIST ((char *));static void PrintError PROTO_LIST ((char *, int));static void GetCommand PROTO_LIST ((char *, unsigned int, char *));static int SILENT_PROMPT = 0;static unsigned char PRIME1[64] = {  0xd0, 0x45, 0x1f, 0xfe, 0x2c, 0x64, 0xc4, 0xed, 0x6b, 0x0a, 0xe6,  0x36, 0x5b, 0x7f, 0xef, 0x9c, 0x15, 0x42, 0x5e, 0x40, 0xa3, 0x7c,  0xa5, 0xf8, 0x39, 0x86, 0x5e, 0x2c, 0xfb, 0x41, 0x69, 0xa0, 0xd8,  0x25, 0xc9, 0x13, 0x0f, 0x88, 0x64, 0xff, 0xfc, 0xf3, 0xbf, 0xbe,  0xb0, 0x27, 0x36, 0x60, 0x67, 0xaa, 0x27, 0xe2, 0x7b, 0xfc, 0xaf,  0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};static unsigned char GENERATOR1[64] = {  0x0a, 0xcf, 0x95, 0x8c, 0x40, 0xd3, 0x01, 0xef, 0xc5, 0x15, 0x3e,  0x7d, 0xcd, 0x5e, 0xf7, 0x5f, 0xec, 0x9e, 0x8f, 0xb0, 0xfa, 0xe6,  0xa8, 0x0e, 0xe5, 0xc3, 0xb8, 0x4b, 0x9c, 0x0e, 0x51, 0x30, 0x51,  0xb2, 0xb7, 0x54, 0x2e, 0x66, 0xb8, 0xd3, 0xa2, 0x5e, 0x93, 0x89,  0x11, 0xad, 0x6b, 0xe5, 0xc2, 0x43, 0x95, 0x09, 0x9c, 0x6d, 0xda,  0xa8, 0x6e, 0x18, 0x94, 0x2f, 0x29, 0x84, 0x27, 0x5a};static R_DH_PARAMS PARAMS1 = {  PRIME1, sizeof (PRIME1), GENERATOR1, sizeof (GENERATOR1)};R_DH_PARAMS PARAMS2;int PARAMS2_READY = 0;int main (argc, argv)int argc;char *argv[];{  R_RANDOM_STRUCT randomStruct;  char command[80];  int done = 0;  if (SetOptions (argc, argv))    return (0);    InitRandomStruct (&randomStruct);  PrintMessage    ("NOTE: When saving to a file, a filename of \"-\" will output to the screen.");  while (!done) {    PrintMessage ("");    PrintMessage ("S - Set up a key agreement");    PrintMessage ("C - Compute an agreed-upon key");    PrintMessage ("G - Generate parameters (may take a long time)");    PrintMessage ("Q - Quit");    GetCommand (command, sizeof (command), "  Enter choice: ");        switch (*command) {    case '\0':    case '#':      /* entered a blank line or a comment */      break;          case 's':    case 'S':      DoSetupAgreement (&randomStruct);      break;          case 'c':    case 'C':      DoComputeAgreedKey ();      break;    case 'g':    case 'G':      DoGenerateParams (&randomStruct);      break;          case 'Q':    case 'q':      done = 1;      break;          default:      PrintError ("ERROR: Unrecognized command.  Try again.", 0);      break;    }  }    R_RandomFinal (&randomStruct);  return (0);}/* Set options from command line and return 0 for success, 1 for bad format. */static int SetOptions (argc, argv)int argc;char *argv[];{  int i, status = 0;    for (i = 1; i < argc; i++) {    if (argv[i][0] != '-') {      status = 1;      break;    }        if (argv[i][1] == 's')      SILENT_PROMPT = 1;    else {      status = 1;      break;    }  }  if (status)    puts ("Usage: dhdemo [-s]\n\  -s silent prompts");  return (status);}/* Initialize the random structure with all zero seed bytes for test purposes.   NOTE that this will cause the output of the "random" process to be     the same every time.  To produce random bytes, the random struct     needs random seeds! */static void InitRandomStruct (randomStruct)R_RANDOM_STRUCT *randomStruct;{  static unsigned char seedByte = 0;  unsigned int bytesNeeded;    R_RandomInit (randomStruct);    /* Initialize with all zero seed bytes, which will not yield an actual       random number output.   */  while (1) {    R_GetRandomBytesNeeded (&bytesNeeded, randomStruct);    if (bytesNeeded == 0)      break;        R_RandomUpdate (randomStruct, &seedByte, 1);  }}static void DoSetupAgreement (randomStruct)R_RANDOM_STRUCT *randomStruct;{  R_DH_PARAMS *params;  char command[80];  int status;  unsigned char *privateValue, *publicValue;  unsigned int privateValueLen;  if (GetParams      (&params, "  Set up with parameters 1 or 2? (blank to cancel): "))    return;  GetCommand    (command, sizeof (command),     "  Enter length in bytes of private value (blank to cancel): ");  if (! *command)    return;  sscanf (command, "%d", &privateValueLen);  privateValue = (unsigned char *)malloc (privateValueLen);  publicValue = (unsigned char *)malloc (params->primeLen);  /* Set up a break point with a do {} while (0) so that we can       zeroize the sensitive buffers before exiting.   */  do {    if (status = R_SetupDHAgreement        (publicValue, privateValue, privateValueLen, params, randomStruct)) {      PrintError ("setting up key agreement", status);      break;    }      if (WriteBlock        (publicValue, params->primeLen,         "  Enter filename to save the public value (blank to cancel): "))      break;      if (WriteBlock        (privateValue, privateValueLen,         "  Enter filename to save the private value (blank to cancel): "))      break;  } while (0);  memset ((POINTER)privateValue, 0, privateValueLen);  free (privateValue);  free (publicValue);}static void DoComputeAgreedKey (){  R_DH_PARAMS *params;  int status;  unsigned char *agreedKey, *otherPublicValue, *privateValue;  unsigned int otherPublicValueLen, privateValueLen;  if (GetParams      (&params, "  Compute with parameters 1 or 2? (blank to cancel): "))    return;  otherPublicValue = (unsigned char *)malloc (params->primeLen);  privateValue = (unsigned char *)malloc (params->primeLen);  agreedKey = (unsigned char *)malloc (params->primeLen);  /* Set up a break point with a do {} while (0) so that we can       zeroize the sensitive buffers before exiting.   */  do {    if (ReadBlock        (otherPublicValue, &otherPublicValueLen, params->primeLen,         "  Enter filename of other party's public value (blank to cancel): "))      break;    if (otherPublicValueLen != params->primeLen) {      PrintError ("ERROR: Other party's public value has wrong length", 0);      break;    }    if (ReadBlock        (privateValue, &privateValueLen, params->primeLen,         "  Enter filename of private value (blank to cancel): "))      break;      if (status = R_ComputeDHAgreedKey        (agreedKey, otherPublicValue, privateValue, privateValueLen, params)) {      PrintError ("computing agreed-upon key", status);      break;    }      if (WriteBlock        (agreedKey, params->primeLen,         "  Enter filename to save the agreed-upon key (blank to cancel): "))      break;  } while (0);    memset ((POINTER)privateValue, 0, privateValueLen);  memset ((POINTER)agreedKey, 0, params->primeLen);  free (otherPublicValue);  free (privateValue);  free (agreedKey);}static void DoGenerateParams (randomStruct)R_RANDOM_STRUCT *randomStruct;{  char command[80];  int status, primeBits, subPrimeBits;  GetCommand    (command, sizeof (command),     "  Enter prime size in bits, (16 to 1024) (blank to cancel): ");  if (! *command)    return;  sscanf (command, "%d", &primeBits);  GetCommand    (command, sizeof (command),     "  Enter subprime size in bits, (16 to 1024) (blank to cancel): ");  if (! *command)    return;  sscanf (command, "%d", &subPrimeBits);  if (PARAMS2_READY) {    free (PARAMS2.prime);    free (PARAMS2.generator);  }  PARAMS2.prime = (unsigned char *)malloc (DH_PRIME_LEN (primeBits));  PARAMS2.generator = (unsigned char *)malloc (DH_PRIME_LEN (primeBits));    if (status = R_GenerateDHParams      (&PARAMS2, primeBits, subPrimeBits, randomStruct)) {    PrintError ("generating parameters", status);    return;  }  PrintMessage ("Parameters 2 are now ready to use.");  PARAMS2_READY = 1;    WriteParams2 ();}static void WriteParams2 (){  FILE *file;  char filename[256];    while (1) {    GetCommand      (filename, sizeof (filename),       "Enter filename to save the parameters (blank to not save): ");    if (! *filename)      return;        if (filename[0] == '-' && filename[1] == '\0') {      /* use stdout */      file = stdout;      break;    }    if ((file = fopen (filename, "w")) != NULL)      /* successfully opened */      break;        PrintError ("ERROR: Cannot open a file with that name.  Try again.", 0);  }  fprintf (file, "Parameters:\n");  fprintf (file, "  prime: ");  WriteBigInteger (file, PARAMS2.prime, PARAMS2.primeLen);  fprintf (file, "  generator: ");  WriteBigInteger (file, PARAMS2.generator, PARAMS2.generatorLen);  if (file != stdout)    fclose (file);}/* Write the byte string 'integer' to 'file', skipping over leading zeros. */static void WriteBigInteger (file, integer, integerLen)FILE *file;unsigned char *integer;unsigned int integerLen;{  while (*integer == 0 && integerLen > 0) {    integer++;    integerLen--;  }    if (integerLen == 0) {    /* Special case, just print a zero. */    fprintf (file, "00\n");    return;  }    for (; integerLen > 0; integerLen--)    fprintf (file, "%02x ", (unsigned int)(*integer++));  fprintf (file, "\n");}/* Use the prompt to ask the user to use parameters 1 or 2 and     point params to the answer.   Return 0 on success or 1 if user cancels by entering a blank. */static int GetParams (params, prompt)R_DH_PARAMS **params;char *prompt;{  char command[80];    while (1) {    GetCommand (command, sizeof (command), prompt);    switch (*command) {    case '\0':      return (1);          case '1':      *params = &PARAMS1;      return (0);          case '2':      if (!PARAMS2_READY) {        PrintError          ("ERROR: Parameters 2 have not been generated yet.  Try Again.", 0);        break;      }      else {        *params = &PARAMS2;        return (0);      }          default:      if (PARAMS2_READY)        PrintError ("ERROR: Please enter 1 or 2.  Try again.", 0);      else        PrintError ("ERROR: Please enter 1.  Try again.", 0);      break;    }  }}/* Read a file of up to length maxBlockLen bytes, storing it in     block and returning its length in blockLen.   Ask for the filename using the given prompt string.   Return 0 on success or 1 if error or if user cancels by entering a blank. */static int ReadBlock (block, blockLen, maxBlockLen, prompt) unsigned char *block;unsigned int *blockLen;unsigned int maxBlockLen;char *prompt;{  FILE *file;  int status;  char filename[256];  unsigned char dummy;    while (1) {    GetCommand (filename, sizeof (filename), prompt);    if (! *filename)      return (1);        if ((file = fopen (filename, "rb")) != NULL)      /* successfully opened */      break;        PrintError ("ERROR: Cannot open a file with that name.  Try again.", 0);  }    /* fread () returns the number of items read in.  Expect an end of file       after the read.   */  *blockLen = fread (block, 1, maxBlockLen, file);  if (*blockLen == maxBlockLen)    /* Read exactly maxBlockLen bytes, so reading one more will set          end of file if there were exactly maxBlockLen bytes in the file.     */    fread (&dummy, 1, 1, file);    if (!feof (file)) {    PrintError ("ERROR: Cannot read file or file is too large.", 0);    status = 1;  }  else    status = 0;    fclose (file);  return (status);}/* Write block oflength blockLen to a file.   Ask for the filename using the given prompt string.   Return 0 on success or 1 if error or if user cancels by entering a blank. */static int WriteBlock (block, blockLen, prompt) unsigned char *block;unsigned int blockLen;char *prompt;{  FILE *file;  int status;  char filename[256];    while (1) {    GetCommand (filename, sizeof (filename), prompt);    if (! *filename)      return (1);        if (filename[0] == '-' && filename[1] == '\0') {      /* use stdout */      file = stdout;      break;    }    if ((file = fopen (filename, "wb")) != NULL)      /* successfully opened */      break;        PrintError ("ERROR: Cannot open a file with that name.  Try again.", 0);  }    status = 0;  if (fwrite (block, 1, blockLen, file) < blockLen) {    PrintError ("ERROR: Cannot write file.", 0);    status = 1;  }  else {    if (file == stdout)      /* Printing to screen, so print a new line. */      printf ("\n");  }  if (file != stdout)    fclose (file);  return (status);}static void PrintMessage (message)char *message;{  if (!SILENT_PROMPT) {    puts (message);    fflush (stdout);  }}/* If type is zero, simply print the task string, otherwise convert the     type to a string and print task and type. */static void PrintError (task, type)char *task;int type;{  char *typeString, buf[80];  if (type == 0) {    puts (task);    return;  }    /* Convert the type to a string if it is recognized.   */  switch (type) {  case RE_CONTENT_ENCODING:    typeString = "(Encrypted) content has RFC 1113 encoding error";    break;  case RE_DIGEST_ALGORITHM:    typeString = "Message-digest algorithm is invalid";    break;  case RE_KEY:    typeString = "Recovered DES key cannot decrypt encrypted content or encrypt signature";    break;  case RE_KEY_ENCODING:    typeString = "Encrypted key has RFC 1113 encoding error";    break;  case RE_MODULUS_LEN:    typeString = "Modulus length is invalid";    break;  case RE_NEED_RANDOM:    typeString = "Random structure is not seeded";    break;  case RE_PRIVATE_KEY:    typeString = "Private key cannot encrypt message digest, or cannot decrypt encrypted key";    break;  case RE_PUBLIC_KEY:    typeString = "Public key cannot encrypt DES key, or cannot decrypt signature";    break;  case RE_SIGNATURE:    typeString = "Signature on content or block is incorrect";    break;  case RE_SIGNATURE_ENCODING:    typeString = "(Encrypted) signature has RFC 1113 encoding error";    break;      default:    sprintf (buf, "Code 0x%04x", type);    typeString = buf;  }  printf ("ERROR: %s while %s\n", typeString, task);    fflush (stdout);}static void GetCommand (command, maxCommandSize, prompt)char *command;unsigned int maxCommandSize;char *prompt;{  unsigned int i;    if (!SILENT_PROMPT) {    printf ("%s\n", prompt);      fflush (stdout);  }  fgets (command, maxCommandSize, stdin);    /* Replace the line terminator with a '\0'.   */  for (i = 0; command[i] != '\0'; i++) {    if (command[i] == '\012' || command[i] == '\015' ||        i == (maxCommandSize - 1)) {      command[i] = '\0';      return;    }  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品羞羞网站| 国产麻豆9l精品三级站| 在线不卡一区二区| 亚洲综合一区二区精品导航| 国产成人精品一区二区三区网站观看 | 高潮精品一区videoshd| 欧美成人艳星乳罩| 九色|91porny| 国产蜜臀av在线一区二区三区| 国产一区二区三区日韩| 国产亚洲va综合人人澡精品| 国产精品一区二区三区99| 欧美成人video| 国产精品一区二区在线看| 欧美国产日韩在线观看| 91在线视频官网| 亚洲一区视频在线观看视频| 亚洲综合一区二区精品导航| 色综合久久久网| 日韩有码一区二区三区| 精品福利一区二区三区免费视频| 国产一区二区三区国产| 国产精品剧情在线亚洲| 95精品视频在线| 日韩精品欧美精品| 久久久久久久久久久久久久久99| 成人激情动漫在线观看| 亚洲午夜在线视频| 精品播放一区二区| 在线观看免费视频综合| 蜜臀91精品一区二区三区| 国产精品久久久久一区二区三区共| 国产成人免费9x9x人网站视频| 亚洲激情综合网| 亚洲高清视频中文字幕| 欧美精品一区二区久久婷婷| 91网址在线看| 国产精品一区不卡| 亚洲bdsm女犯bdsm网站| 国产精品国产三级国产普通话99| 欧美一区二区国产| 在线欧美小视频| 99视频精品在线| 开心九九激情九九欧美日韩精美视频电影 | 成人a免费在线看| 国产在线精品国自产拍免费| 日本欧美在线看| 日本中文字幕一区二区有限公司| 亚洲国产另类精品专区| 亚洲高清不卡在线观看| 亚洲国产aⅴ成人精品无吗| 制服丝袜在线91| 色综合网色综合| 国内精品自线一区二区三区视频| 91丨国产丨九色丨pron| 精品对白一区国产伦| 中文字幕一区二区三区av| 日一区二区三区| 99热这里都是精品| 欧美mv日韩mv| 亚洲www啪成人一区二区麻豆| 国产成人在线免费观看| 欧美精品在线视频| 亚洲女与黑人做爰| 国产在线视频不卡二| 欧美日韩在线播放三区四区| 久久美女艺术照精彩视频福利播放| 亚洲国产综合91精品麻豆| 成人少妇影院yyyy| 欧美白人最猛性xxxxx69交| 亚洲午夜久久久久久久久电影网 | 777a∨成人精品桃花网| 亚洲视频一区二区免费在线观看| 精品无人码麻豆乱码1区2区| 精品视频1区2区| 国产精品看片你懂得| 九九在线精品视频| 制服丝袜亚洲播放| 一区二区免费看| 99热在这里有精品免费| 国产精品网友自拍| 国内成+人亚洲+欧美+综合在线| 在线成人午夜影院| 亚洲永久免费av| 91丨porny丨国产入口| 国产精品三级av| 免费成人在线视频观看| 一本大道久久a久久精品综合| 久久久精品免费观看| 日本成人在线不卡视频| 欧美午夜一区二区三区| 亚洲精品日产精品乱码不卡| av日韩在线网站| 欧美韩日一区二区三区四区| 国产精品77777竹菊影视小说| 欧美大片在线观看一区二区| 亚洲午夜久久久久中文字幕久| 奇米一区二区三区av| 欧美日韩大陆一区二区| 亚洲综合一区二区| 欧美综合亚洲图片综合区| 亚洲欧美激情小说另类| 色诱视频网站一区| 亚洲已满18点击进入久久| 在线免费一区三区| 一区二区高清在线| 在线欧美小视频| 亚洲福利国产精品| 欧美剧情片在线观看| 日韩精品成人一区二区在线| 日韩一区二区三免费高清| 精品一区二区三区视频| 精品99一区二区| 国产成人自拍在线| 中文字幕中文在线不卡住| 91丨porny丨国产入口| 亚洲午夜国产一区99re久久| 91麻豆精品国产91久久久使用方法| 日韩电影在线观看网站| 欧美电影免费观看高清完整版| 国产一区欧美日韩| 日本一区二区三区在线观看| 91麻豆免费视频| 亚洲国产乱码最新视频| 精品少妇一区二区三区| 成人性色生活片| 亚洲人成亚洲人成在线观看图片 | 亚洲国产精品v| 91丝袜美腿高跟国产极品老师 | 婷婷激情综合网| 日韩精品一区二区三区视频播放| 国产在线看一区| 中文字幕一区在线观看视频| 欧美日韩视频不卡| 久久99精品久久久久久久久久久久 | 99国产一区二区三精品乱码| 日韩毛片高清在线播放| 欧美日韩一区二区电影| 精品一区二区三区在线播放| 中文字幕的久久| 在线中文字幕一区二区| 美国av一区二区| 最好看的中文字幕久久| 欧美日韩亚洲不卡| 国产精品一区二区x88av| 亚洲综合视频网| 久久无码av三级| 在线观看免费成人| 国产一区二区三区| 夜夜嗨av一区二区三区网页| 欧美哺乳videos| 在线观看一区日韩| 国产一区二区三区四区在线观看 | 91网站在线播放| 麻豆国产欧美日韩综合精品二区| 国产精品久久久久精k8| 91精品国产91热久久久做人人| 成人高清视频在线观看| 日韩精品亚洲专区| 自拍av一区二区三区| 日韩免费看的电影| 色999日韩国产欧美一区二区| 精品亚洲成av人在线观看| 亚洲福利一二三区| 国产精品久久久久aaaa樱花 | 久久精品日韩一区二区三区| 91久久精品一区二区三| 国产精品白丝jk黑袜喷水| 亚洲午夜精品一区二区三区他趣| 欧美激情一区二区三区四区| 日韩一本二本av| 欧洲精品在线观看| 成人黄页在线观看| 黑人巨大精品欧美黑白配亚洲| 亚洲高清在线精品| 亚洲乱码中文字幕| 国产婷婷色一区二区三区| 日韩午夜激情av| 欧美性一二三区| 91蜜桃在线免费视频| 国产91丝袜在线18| 国精品**一区二区三区在线蜜桃| 亚洲国产欧美在线| 亚洲欧美一区二区久久 | 国产一区二区美女诱惑| 亚洲成a天堂v人片| 一区二区三区蜜桃| 中文字幕日本乱码精品影院| 久久精品视频免费| 久久综合精品国产一区二区三区| 欧美日韩精品高清| 在线区一区二视频| 日本精品免费观看高清观看| 91视频观看免费| 99国产精品久久久久久久久久| 国产suv精品一区二区三区| 紧缚奴在线一区二区三区| 久久精品国产一区二区三区免费看| 午夜久久久久久| 日本午夜一本久久久综合|