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

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

?? r_enhanc.c

?? 利用c++的 文件加密設計 可以運行 但是沒有詳細的 說明
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* R_ENHANC.C - cryptographic enhancements for RSAREF *//* Copyright (C) RSA Laboratories, a division of RSA Data Security,     Inc., created 1991. All rights reserved. */#include "global.h"#include "rsaref.h"#include "r_random.h"#include "rsa.h"/* DigestInfo encoding is DIGEST_INFO_A, then 2 or 5 (for MD2/MD5),   then DIGEST_INFO_B, then 16-byte message digest. */static unsigned char DIGEST_INFO_A[] = {  0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7,  0x0d, 0x02};#define DIGEST_INFO_A_LEN sizeof (DIGEST_INFO_A)static unsigned char DIGEST_INFO_B[] = { 0x05, 0x00, 0x04, 0x10 };#define DIGEST_INFO_B_LEN sizeof (DIGEST_INFO_B)#define DIGEST_INFO_LEN (DIGEST_INFO_A_LEN + 1 + DIGEST_INFO_B_LEN + 16)static unsigned char *PADDING[] = {  (unsigned char *)"", (unsigned char *)"\001", (unsigned char *)"\002\002",  (unsigned char *)"\003\003\003", (unsigned char *)"\004\004\004\004",  (unsigned char *)"\005\005\005\005\005",  (unsigned char *)"\006\006\006\006\006\006",   (unsigned char *)"\007\007\007\007\007\007\007",  (unsigned char *)"\010\010\010\010\010\010\010\010"};#define MAX_ENCRYPTED_KEY_LEN MAX_RSA_MODULUS_LENstatic void R_EncodeDigestInfo PROTO_LIST  ((unsigned char *, int, unsigned char *));static void EncryptPEMUpdateFinal PROTO_LIST  ((R_ENVELOPE_CTX *, unsigned char *, unsigned int *, unsigned char *,    unsigned int));static int DecryptPEMUpdateFinal PROTO_LIST  ((R_ENVELOPE_CTX *, unsigned char *, unsigned int *, unsigned char *,    unsigned int));static int CipherInit PROTO_LIST  ((R_ENVELOPE_CTX *, int, unsigned char *, unsigned char *, int));static void CipherUpdate PROTO_LIST  ((R_ENVELOPE_CTX *, unsigned char *, unsigned char *, unsigned int));static void CipherRestart PROTO_LIST ((R_ENVELOPE_CTX *));int R_DigestInit (context, digestAlgorithm)R_DIGEST_CTX *context;                                       /* new context */int digestAlgorithm;                            /* message-digest algorithm */{  context->digestAlgorithm = digestAlgorithm;  switch (digestAlgorithm) {  case DA_MD2:    MD2Init (&context->context.md2);    break;  case DA_MD5:    MD5Init (&context->context.md5);    break;    default:    return (RE_DIGEST_ALGORITHM);  }  return (0);}int R_DigestUpdate (context, partIn, partInLen)R_DIGEST_CTX *context;                                           /* context */unsigned char *partIn;                                    /* next data part */unsigned int partInLen;                         /* length of next data part */{  if (context->digestAlgorithm == DA_MD2)    MD2Update (&context->context.md2, partIn, partInLen);  else    MD5Update (&context->context.md5, partIn, partInLen);  return (0);}int R_DigestFinal (context, digest, digestLen)R_DIGEST_CTX *context;                                           /* context */unsigned char *digest;                                    /* message digest */unsigned int *digestLen;                        /* length of message digest */{  *digestLen = 16;  if (context->digestAlgorithm == DA_MD2)    MD2Final (digest, &context->context.md2);  else    MD5Final (digest, &context->context.md5);  return (0);}int R_SignInit (context, digestAlgorithm)R_SIGNATURE_CTX *context;                                    /* new context */int digestAlgorithm;                            /* message-digest algorithm */{  return (R_DigestInit (&context->digestContext, digestAlgorithm));}int R_SignUpdate (context, partIn, partInLen)R_SIGNATURE_CTX *context;                                        /* context */unsigned char *partIn;                                    /* next data part */unsigned int partInLen;                         /* length of next data part */{  return (R_DigestUpdate (&context->digestContext, partIn, partInLen));}int R_SignFinal (context, signature, signatureLen, privateKey)R_SIGNATURE_CTX *context;                                        /* context */unsigned char *signature;                                      /* signature */unsigned int *signatureLen;                          /* length of signature */R_RSA_PRIVATE_KEY *privateKey;                  /* signer's RSA private key */{  int status;  unsigned char digest[MAX_DIGEST_LEN], digestInfo[DIGEST_INFO_LEN];  unsigned int digestLen;  do {    if ((status = R_DigestFinal (&context->digestContext, digest, &digestLen))        != 0)      break;    R_EncodeDigestInfo      (digestInfo, context->digestContext.digestAlgorithm, digest);        if (RSAPrivateEncrypt        (signature, signatureLen, digestInfo, DIGEST_INFO_LEN, privateKey)        != 0) {      status = RE_PRIVATE_KEY;      break;    }    /* Reset for another verification. Assume Init won't fail */    R_DigestInit      (&context->digestContext, context->digestContext.digestAlgorithm);  } while (0);    /* Zeroize potentially sensitive information.   */  R_memset ((POINTER)digest, 0, sizeof (digest));  R_memset ((POINTER)digestInfo, 0, sizeof (digestInfo));  return (status);}int R_VerifyInit (context, digestAlgorithm)R_SIGNATURE_CTX *context;                                    /* new context */int digestAlgorithm;                            /* message-digest algorithm */{  return (R_DigestInit (&context->digestContext, digestAlgorithm));}int R_VerifyUpdate (context, partIn, partInLen)R_SIGNATURE_CTX *context;                                        /* context */unsigned char *partIn;                                    /* next data part */unsigned int partInLen;                         /* length of next data part */{  return (R_DigestUpdate (&context->digestContext, partIn, partInLen));}int R_VerifyFinal (context, signature, signatureLen, publicKey)R_SIGNATURE_CTX *context;                                        /* context */unsigned char *signature;                                      /* signature */unsigned int signatureLen;                           /* length of signature */R_RSA_PUBLIC_KEY *publicKey;                     /* signer's RSA public key */{  int status;  unsigned char digest[MAX_DIGEST_LEN], digestInfo[DIGEST_INFO_LEN],    originalDigestInfo[MAX_SIGNATURE_LEN];  unsigned int originalDigestInfoLen, digestLen;    if (signatureLen > MAX_SIGNATURE_LEN)    return (RE_LEN);  status = 0;  do {    if ((status = R_DigestFinal (&context->digestContext, digest, &digestLen))        != 0)      break;    R_EncodeDigestInfo      (digestInfo, context->digestContext.digestAlgorithm, digest);        if (RSAPublicDecrypt        (originalDigestInfo, &originalDigestInfoLen, signature, signatureLen,          publicKey) != 0) {      status = RE_PUBLIC_KEY;      break;    }        if ((originalDigestInfoLen != DIGEST_INFO_LEN) ||        (R_memcmp          ((POINTER)originalDigestInfo, (POINTER)digestInfo,          DIGEST_INFO_LEN))) {      status = RE_SIGNATURE;      break;    }    /* Reset for another verification. Assume Init won't fail */    R_DigestInit      (&context->digestContext, context->digestContext.digestAlgorithm);  } while (0);    /* Zeroize potentially sensitive information.   */  R_memset ((POINTER)digest, 0, sizeof (digest));  R_memset ((POINTER)digestInfo, 0, sizeof (digestInfo));  R_memset ((POINTER)originalDigestInfo, 0, sizeof (originalDigestInfo));  return (status);}/* Caller must ASCII recode the encrypted keys if desired. */int R_SealInit  (context, encryptedKeys, encryptedKeyLens, iv, publicKeyCount, publicKeys,   encryptionAlgorithm, randomStruct)R_ENVELOPE_CTX *context;                                     /* new context */unsigned char **encryptedKeys;                            /* encrypted keys */unsigned int *encryptedKeyLens;                /* lengths of encrypted keys */unsigned char iv[8];                               /* initialization vector */unsigned int publicKeyCount;                       /* number of public keys */R_RSA_PUBLIC_KEY **publicKeys;                               /* public keys */int encryptionAlgorithm;                       /* data encryption algorithm */R_RANDOM_STRUCT *randomStruct;                          /* random structure */{  int status;  unsigned char key[24];  unsigned int keyLen, i;    do {    context->encryptionAlgorithm = encryptionAlgorithm;        keyLen = (encryptionAlgorithm == EA_DES_CBC) ? 8 : 24;    if ((status = R_GenerateBytes (key, keyLen, randomStruct)) != 0)      break;    if ((status = R_GenerateBytes (iv, 8, randomStruct)) != 0)      break;    if (encryptionAlgorithm == EA_DES_EDE2_CBC)      /* Make both E keys the same */      R_memcpy ((POINTER)(key + 16), (POINTER)key, 8);    if ((status = CipherInit (context, encryptionAlgorithm, key, iv, 1)) != 0)      break;    for (i = 0; i < publicKeyCount; ++i) {      if (RSAPublicEncrypt          (encryptedKeys[i], &encryptedKeyLens[i], key, keyLen,           publicKeys[i], randomStruct)) {        status = RE_PUBLIC_KEY;        break;      }    }    if (status != 0)      break;    context->bufferLen = 0;  } while (0);    /* Zeroize sensitive information.   */  R_memset ((POINTER)key, 0, sizeof (key));  return (status);}/* Assume partOut buffer is at least partInLen + 7, since this may flush     buffered input. */int R_SealUpdate (context, partOut, partOutLen, partIn, partInLen)R_ENVELOPE_CTX *context;                                         /* context */unsigned char *partOut;                         /* next encrypted data part */unsigned int *partOutLen;             /* length of next encrypted data part */unsigned char *partIn;                                    /* next data part */unsigned int partInLen;                         /* length of next data part */{  unsigned int tempLen;  tempLen = 8 - context->bufferLen;  if (partInLen < tempLen) {    /* Just accumulate into buffer.     */    R_memcpy      ((POINTER)(context->buffer + context->bufferLen), (POINTER)partIn,       partInLen);    context->bufferLen += partInLen;    *partOutLen = 0;    return (0);  }  /* Fill the buffer and encrypt.   */  R_memcpy    ((POINTER)(context->buffer + context->bufferLen), (POINTER)partIn,     tempLen);  CipherUpdate (context, partOut, context->buffer, 8);  partIn += tempLen;  partInLen -= tempLen;  partOut += 8;  *partOutLen = 8;  /* Encrypt as many 8-byte blocks as possible.   */  tempLen = 8 * (partInLen / 8);  CipherUpdate (context, partOut, partIn, tempLen);  partIn += tempLen;  partInLen -= tempLen;  *partOutLen += tempLen;  /* Length is now less than 8, so copy remainder to buffer.   */  R_memcpy    ((POINTER)context->buffer, (POINTER)partIn,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色免费看| 夜夜嗨av一区二区三区网页| 欧美国产日韩亚洲一区| 亚洲成人免费在线观看| 懂色中文一区二区在线播放| 欧美电影在哪看比较好| 亚洲日本青草视频在线怡红院| 青青草97国产精品免费观看| 色一情一乱一乱一91av| 国产精品五月天| 国产一本一道久久香蕉| 欧美一区二区三区在| 夜色激情一区二区| 菠萝蜜视频在线观看一区| 久久综合资源网| 日韩av午夜在线观看| 欧美网站大全在线观看| 最新日韩在线视频| 福利一区二区在线观看| 久久精品日产第一区二区三区高清版| 日韩电影在线观看一区| 欧美日韩国产小视频在线观看| 中文字幕欧美激情| 成人免费高清视频在线观看| 久久久精品综合| 国产一区日韩二区欧美三区| 日韩一区二区电影网| 视频在线在亚洲| 欧美嫩在线观看| 五月婷婷综合在线| 91精品国产免费| 裸体一区二区三区| 日韩精品专区在线| 国模娜娜一区二区三区| 欧美精品一区二区三区在线| 精品中文字幕一区二区小辣椒| 欧美一区二区三区视频免费播放 | 色综合久久中文综合久久牛| 国产精品视频yy9299一区| 福利电影一区二区| 亚洲欧美成人一区二区三区| 色综合天天视频在线观看 | 久久久久久久综合日本| 国产原创一区二区| 国产精品久99| 在线视频观看一区| 蜜臀va亚洲va欧美va天堂 | 欧美日韩成人综合| 日韩国产精品91| 日韩精品在线网站| 国产成人免费在线| 亚洲欧美日韩国产手机在线| 欧美无乱码久久久免费午夜一区| 日韩av在线播放中文字幕| www国产亚洲精品久久麻豆| 国产xxx精品视频大全| 中文字幕一区二区三区乱码在线 | 精品成人在线观看| 国产不卡视频一区| 亚洲国产毛片aaaaa无费看 | 国产亚洲精品aa午夜观看| 成人理论电影网| 亚洲18色成人| 国产网站一区二区| 欧美三级蜜桃2在线观看| 国内外成人在线| 亚洲人吸女人奶水| 欧美一激情一区二区三区| 国产69精品久久久久777| 一区二区久久久| 欧美成人精精品一区二区频| jizzjizzjizz欧美| 奇米色一区二区三区四区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美三级电影一区| 成人高清视频免费观看| 男人的天堂亚洲一区| 亚洲人成网站精品片在线观看| 欧美一级黄色大片| 在线观看日韩精品| 不卡的看片网站| 激情综合色播五月| 亚洲成人黄色影院| 国产精品灌醉下药二区| 欧美大片在线观看一区| 欧美视频一区二区三区| 国产成人av一区二区| 日韩高清不卡一区二区| 亚洲精品成人少妇| 国产精品久久久久久久久免费桃花 | 91.xcao| 99亚偷拍自图区亚洲| 国内成人精品2018免费看| 亚洲一区二区三区四区五区中文 | 日韩亚洲欧美中文三级| 一本到高清视频免费精品| 国产老女人精品毛片久久| 日韩电影在线观看电影| 亚洲图片自拍偷拍| 亚洲精品视频在线观看免费| 国产偷国产偷亚洲高清人白洁 | 国产一区二三区| 五月激情六月综合| 亚洲网友自拍偷拍| 亚洲午夜精品在线| 亚洲一区二区三区四区的| 亚洲乱码日产精品bd| 国产精品美女久久久久久久久久久| 久久你懂得1024| 欧美精品一区二区在线播放| 日韩精品一区国产麻豆| 欧美一区二区精品在线| 91精品国产色综合久久ai换脸 | 色屁屁一区二区| 麻豆91精品视频| 美女视频黄频大全不卡视频在线播放| 亚洲精选免费视频| 亚洲日穴在线视频| 亚洲精品你懂的| 亚洲一区二区成人在线观看| 亚洲精品一二三区| 亚洲成人自拍偷拍| 亚洲成va人在线观看| 日韩成人免费在线| 麻豆国产91在线播放| 国模冰冰炮一区二区| 国产成人综合亚洲网站| 波多野结衣亚洲一区| 97se狠狠狠综合亚洲狠狠| 91在线视频网址| 色先锋资源久久综合| 欧美日产国产精品| 欧美xxx久久| 国产欧美日韩精品一区| 亚洲男人都懂的| 日韩av在线免费观看不卡| 精品无人码麻豆乱码1区2区| 成人不卡免费av| 精品1区2区3区| 欧美电视剧免费全集观看| 亚洲国产激情av| 亚洲电影你懂得| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲美女一区二区三区| 视频一区在线播放| 国产乱码精品一区二区三区av| 懂色av噜噜一区二区三区av| 色香蕉久久蜜桃| 亚洲精品在线电影| 一区二区三区四区激情| 蜜桃视频在线观看一区| 波多野结衣一区二区三区| 6080yy午夜一二三区久久| 国产色爱av资源综合区| 性做久久久久久久免费看| 国产精品99久久久久| 日本电影欧美片| 久久久久久久久久看片| 亚洲国产精品欧美一二99| 国产精品一卡二卡| 欧美日韩一区二区三区在线看| 久久久久久久久久久99999| 亚洲美女偷拍久久| 国产在线精品免费| 欧美精品高清视频| 国产精品久久久久久久第一福利 | 日韩欧美一区在线观看| 中文字幕一区二区三区av| 捆绑调教一区二区三区| 欧美在线小视频| 久久精品视频免费| 蜜臀久久99精品久久久久宅男 | 精品国产123| 亚洲成av人片www| eeuss鲁片一区二区三区| 日韩免费视频线观看| 午夜影院久久久| 色综合欧美在线视频区| 欧美国产欧美综合| 精品一区二区影视| 制服丝袜亚洲精品中文字幕| 亚洲精品乱码久久久久久黑人| 国产成人丝袜美腿| 久久久亚洲精品一区二区三区| 日韩中文字幕av电影| 欧美吻胸吃奶大尺度电影 | 色狠狠桃花综合| 亚洲欧洲一区二区在线播放| 国产一区二区三区在线观看精品 | 这里只有精品视频在线观看| 亚洲欧美日韩一区二区三区在线观看| 国产精品一区二区x88av| 日韩欧美不卡在线观看视频| 亚洲成人三级小说| 欧美群妇大交群中文字幕| 亚洲一区二区在线免费观看视频| 91一区二区在线观看| 亚洲人亚洲人成电影网站色| 99久久精品国产麻豆演员表| 中文字幕一区二区三区精华液|