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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aes.cpp

?? 網(wǎng)絡(luò)傳輸方面的范例程序,其中有MD5加密和解密的子程序,可以參考
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):

/*
 * Rc6DecryptEcb() decrypts a specified number of blocks in ECB mode.
 */
void CAES::Rc6DecryptEcb(unsigned long* keySchedule, int numberOfBlocks,
                          unsigned long* ciphertext, unsigned long* plaintext)
{
  unsigned long thirtytwo = 32;
  unsigned long S[2+2*ROUNDS+2];


  if (numberOfBlocks == 0)
    return;


  /* Let's put our key schedule conveniently in this stack frame */
  memcpy((void*) S, (void*) keySchedule, 4*(2+2*ROUNDS+2));


  do {
    unsigned long A, B, C, D;
    unsigned long t,u;

    /* Undo pseudo-round #21 and round #20 */
    A = ciphertext[0]-S[42];
    C = ciphertext[2]-S[43];

    t = (A+A+1)*A;
    u = (C+C+1)*C;
    t = CONST_ROTL(t, 5);
    u = CONST_ROTL(u, 5);

    D = ciphertext[3]-S[40];
    B = ciphertext[1]-S[41];
    D = ROTR(D, u) ^ t;
    B = ROTR(B, t) ^ u;


    /* Undo rounds #19-2 */
    DECRYPT_MIDDLE(S, A, B, C, D);


    /* Undo round #1 and pseudo-round #0 */
    t = (B+B+1)*B;
    u = (D+D+1)*D;
    t = CONST_ROTL(t, 5);
    u = CONST_ROTL(u, 5);

    A -= S[2];
    C -= S[3];
    plaintext[0] = ROTR(A, u) ^ t;
    plaintext[2] = ROTR(C, t) ^ u;
    plaintext[1] = B-S[0];
    plaintext[3] = D-S[1];


    /* Update text pointers */
    ciphertext += 4;
    plaintext += 4;

  } while (--numberOfBlocks > 0);
}



/*
 * makeKey() initializes a keyInstance.
 */
int CAES::makeKey(keyInstance* key, BYTE direction, int keyLen, char* keyMaterialold)
{
  BYTE keyBytes[255];
  short keyByte;
  short hexProblem = 0;
  int keyLengthInBytes = keyLen >> 3;
  int i;
  BYTE keyMaterial[32]; 
  for(i=0;i<16;i++)
  {
	  keyMaterial[i]=*keyMaterialold++;
	  keyMaterial[i+16]='1';
  }

  if ((direction != DIR_ENCRYPT) && (direction != DIR_DECRYPT))
    return BAD_KEY_DIR;
  key -> direction = direction;


  /* Deal with the key length.  RC6 can use keys of length 0-255 bytes
   * (0-2040 bits, in multiples of 8). */
  if ((keyLen < 0) || (keyLen > 2040) || ((keyLen & 0x7) != 0))
    return BAD_KEY_MAT;


  /* Get key as a sequence of bytes */
  for (i = keyLengthInBytes; --i >= 0; ) {
    keyBytes[i] = (BYTE) (keyByte = (short) (((ConvertDigitToNumber((BYTE) keyMaterial[i+i]) << 4) | (ConvertDigitToNumber((BYTE) keyMaterial[i+i+1])))));
    hexProblem |= keyByte;
  }


  /* The ConvertDigitToNumber() macro has been designed so that the
   * following test will correctly determine if the supplied ASCII key
   * was not a valid hexadecimal string. */
  //if (hexProblem & 0xff00)
  //  return BAD_KEY_MAT;


  /* Copy ASCII key */
  memcpy(key -> keyMaterial, keyMaterial, keyLengthInBytes << 1);
  key -> keyLen = keyLen;


  Rc6ComputeKeySchedule(keyBytes, keyLengthInBytes, key -> S);


  return TRUE;
  return 1;
}



/*
 * cipherInit() initializes a cipherInstance.
 */
int CAES::cipherInit(cipherInstance* cipher, BYTE mode, char* IV)
{
  short ivByte;
  short hexProblem = 0;
  int i;


  if ((mode != MODE_ECB) && (mode != MODE_CBC) && (mode != MODE_CFB1))
    return BAD_CIPHER_MODE;
  cipher -> mode = mode;


  /* Get IV, if appropriate */
  if (IV != NULL) {
    for (i = 16; --i >= 0; ) {
      ((BYTE*) (cipher -> IV))[i] = (BYTE) (
        ivByte = (short) (
          ((ConvertDigitToNumber((BYTE) IV[i+i]) << 4)
         | (ConvertDigitToNumber((BYTE) IV[i+i+1])))));
      hexProblem |= ivByte;
    }


    /* The ConvertDigitToNumber() macro has been designed so that the
     * following test will correctly determine if the supplied ASCII IV
     * was not a valid hexadecimal string. */
    if (hexProblem & 0xff00)
      return BAD_IV_MAT;
  }


  return 1;
}



/*
 * blockEncrypt() encrypts some plaintext.
 */
int CAES::blockEncrypt(cipherInstance *cipher, keyInstance *key,
                 BYTE *input, int inputLen, BYTE *outBuffer)
{
	int numberOfBlocks = inputLen >> 7;
  if (key -> direction != DIR_ENCRYPT)
    return BAD_KEY_MAT;
  
  if(cipher -> mode == MODE_ECB) 
  {
      Rc6EncryptEcb(key -> S, numberOfBlocks,(unsigned long*) input, (unsigned long*) outBuffer);
      return (numberOfBlocks << 7);
  }
  return BAD_KEY_MAT;
}
/*
 * blockDecrypt() decrypts some ciphertext.
 */
int CAES::blockDecrypt(cipherInstance *cipher, keyInstance *key,
                 BYTE *input, int inputLen, BYTE *outBuffer)
{
	int numberOfBlocks = inputLen >> 7;
	if (key -> direction != DIR_DECRYPT)
		return BAD_KEY_MAT;
 	if(cipher -> mode == MODE_ECB) 
	{
		Rc6DecryptEcb(key -> S, numberOfBlocks,(unsigned long*) input, (unsigned long*) outBuffer);
		return (numberOfBlocks << 7);

	}
	return BAD_KEY_MAT;
}
void CAES::encrypt1(char *key,int keylen,unsigned char *input,int inputlen,
                        unsigned char *output)
{
        unsigned char *in,*out;
        char *kk;
        int i;
        in=input;
        out=output;
        kk=key;
        for(i=0;i<inputlen;i++)
                (*out++)=(*in++)^(*kk++);
}
/*keylen <=inputlen*/
void CAES::encrypt2(char *key,int keylen,unsigned char *input,int inputlen,
                        unsigned char *output)
{
        int i,j,t,tail;
        unsigned char *in,*out;
        char *p;
        t=inputlen/keylen;
        tail=inputlen%keylen;
        in=input;
        out=output;
        if(t){
                for(i=0;i<t;i++){
                        p=key;
                        for(j=0;j<keylen;j++){
                                (*out)=(*in)^(*p);
                                 out=out+1;
                                 in=in+1;
                                 p=p+1;
                                }
                        }
                }
        if(tail){encrypt1(key,keylen,in,tail,out);
           /*     printf("encrypt2 \n");*/}
}

void CAES::blockXOR_Encrypt(char *key,int keylen,unsigned char *input,int inputlen,unsigned char *output)
{
        if(keylen>inputlen)
              encrypt1(key,keylen,input,inputlen,output);
        if(keylen<=inputlen)
              encrypt2(key,keylen,input,inputlen,output);

}
int CAES::My_Decrypt(char* key,int keylen, BYTE *input,int inputlen,int type,BYTE *output)
{

	keyInstance S;
    cipherInstance ci;
	int  blocks,tail_bits;
	int  keylen_bit;
	BYTE *in,*out;

	
	in=input;
	out=output;
	
	if(type==1)//aes
	{
		keylen_bit=keylen*8;
		blocks=inputlen/keylen;
		tail_bits=inputlen%keylen;

		if(makeKey(&S,DIR_DECRYPT,keylen_bit,key)<0)
			return -1;
		if(cipherInit(&ci,MODE_ECB,NULL)<0)
			return -2;
		if(blockDecrypt(&ci,&S,input,inputlen*8,output)<0)
			return -3;
	}
	if(type==2)//xor
	{
		blockXOR_Encrypt(key,keylen,input,inputlen,output);
	}
	return 1;
}
int CAES::My_Encrypt(char* key,int keylen, BYTE *input,int inputlen,int type,BYTE *output)
{
	keyInstance S;
	cipherInstance ci;

	int blocks,tail_bits;
	int  keylen_bit;
	BYTE *in,*out;


	in=input;
	out=output;
	if(type==1)
	{
		keylen_bit=keylen*8;
		blocks=inputlen/keylen;
		tail_bits=inputlen%keylen;
		if(makeKey(&S,DIR_ENCRYPT,keylen_bit,key)<0)
			return -1;
		if(cipherInit(&ci,MODE_ECB,NULL)<0)
			return -2;
		if(blockEncrypt(&ci,&S,input,inputlen*8,output)<0)
			return -3;
	}
	if(type==2)//xor
	{
		blockXOR_Encrypt(key,keylen,input,inputlen,output);
	}
	return 1;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
●精品国产综合乱码久久久久| 欧美xxxxx牲另类人与| 日韩成人av影视| 国产精品三级av| 91精品蜜臀在线一区尤物| 成人av网在线| 国产一区二区0| 婷婷综合另类小说色区| ㊣最新国产の精品bt伙计久久| 欧美一区二区国产| 91黄色免费观看| 成人黄色777网| 国产一区二区导航在线播放| 午夜天堂影视香蕉久久| 中文字幕中文字幕在线一区| 精品国产乱码久久久久久久| 欧美午夜不卡视频| 91性感美女视频| 粉嫩av一区二区三区粉嫩| 男人的j进女人的j一区| 午夜影视日本亚洲欧洲精品| 中文字幕一区二区三区蜜月 | 国产精品国产三级国产普通话99 | 精品一区二区日韩| 一区二区三区产品免费精品久久75| 久久亚洲一级片| 日韩欧美综合在线| 3d动漫精品啪啪1区2区免费| 欧美日韩亚洲综合一区二区三区| 91在线精品秘密一区二区| 风间由美一区二区三区在线观看| 精品亚洲porn| 久久99国产精品尤物| 久久www免费人成看片高清| 图片区小说区国产精品视频| 亚洲电影中文字幕在线观看| 亚洲综合色噜噜狠狠| 亚洲午夜免费电影| 午夜影院久久久| 首页国产欧美久久| 日韩—二三区免费观看av| 日韩精品色哟哟| 麻豆成人综合网| 国内久久精品视频| 国产成人av电影在线播放| 福利一区福利二区| youjizz久久| 在线国产亚洲欧美| 欧美日韩国产色站一区二区三区| 欧美日韩精品一区二区三区| 3d动漫精品啪啪| 久久久99精品免费观看不卡| 国产精品美女久久久久久久久 | 成人午夜视频福利| a级精品国产片在线观看| 99re亚洲国产精品| 91高清视频免费看| 777亚洲妇女| 2023国产精品自拍| 亚洲欧洲av另类| 亚洲午夜一区二区三区| 青青草精品视频| 国产成人免费av在线| 成人免费视频视频在线观看免费 | 日韩精品一区二区三区中文不卡 | 亚洲麻豆国产自偷在线| 午夜欧美电影在线观看| 免费成人av资源网| 国产成人av电影在线播放| 色综合久久精品| 91精品欧美福利在线观看| 久久九九影视网| 亚洲激情成人在线| 久久国产精品第一页| 国产不卡免费视频| 欧美色视频一区| 久久久亚洲国产美女国产盗摄| 国产精品久久久久永久免费观看 | 欧美一区二区福利视频| 国产天堂亚洲国产碰碰| 亚洲午夜成aⅴ人片| 国产一区二区免费看| 色噜噜狠狠成人中文综合| 91精品国产一区二区人妖| 国产欧美va欧美不卡在线| 亚洲国产欧美日韩另类综合| 国产又粗又猛又爽又黄91精品| 91免费看片在线观看| 欧美不卡视频一区| 亚洲国产中文字幕在线视频综合 | 蜜臀精品久久久久久蜜臀| 国产精品99久久久久久宅男| 在线观看www91| 久久婷婷久久一区二区三区| 亚洲一级不卡视频| 国产成人精品亚洲午夜麻豆| 欧美日韩免费观看一区三区| 欧美国产一区在线| 免费观看日韩av| 欧美系列一区二区| 国产精品天干天干在观线| 全国精品久久少妇| 91蜜桃网址入口| 久久精品无码一区二区三区| 午夜视频一区二区三区| 91日韩精品一区| 国产欧美一区视频| 久久国产欧美日韩精品| 欧美另类久久久品| 亚洲欧美日韩中文播放| 大胆欧美人体老妇| 久久久久久一二三区| 日韩一区精品视频| 欧美日韩中文字幕一区| 亚洲黄色在线视频| 99久久精品免费| 亚洲国产精品精华液ab| 国产综合色在线视频区| 日韩欧美国产综合一区| 日韩成人免费电影| 欧美日韩国产在线观看| 一区二区三区**美女毛片| 99视频精品在线| 亚洲国产精品ⅴa在线观看| 美女精品自拍一二三四| 欧美一级日韩免费不卡| 日本不卡1234视频| 日韩无一区二区| 另类人妖一区二区av| 欧美xxxx在线观看| 精品一区二区三区影院在线午夜 | 亚洲精品免费视频| av一区二区不卡| 国产精品人成在线观看免费| 粗大黑人巨茎大战欧美成人| 中文字幕乱码亚洲精品一区| 国产v综合v亚洲欧| 国产精品动漫网站| 色哟哟欧美精品| 亚洲成人精品影院| 欧美一区二区三区喷汁尤物| 美女网站色91| 久久网这里都是精品| 丰满白嫩尤物一区二区| 国产精品久99| 欧美性三三影院| 日本网站在线观看一区二区三区 | 久久成人免费日本黄色| 久久众筹精品私拍模特| 大陆成人av片| 一区二区欧美国产| 在线电影国产精品| 激情小说欧美图片| 日本一区二区三区高清不卡| av在线不卡观看免费观看| 一卡二卡欧美日韩| 欧美一区二区黄| 国产一区二区三区日韩| 中文字幕成人在线观看| 色综合中文综合网| 精品国产乱码久久久久久免费 | 欧美三级中文字幕| 日本中文字幕一区| 久久久久久久免费视频了| 粉嫩蜜臀av国产精品网站| 一区二区三区四区精品在线视频| 91麻豆精品国产91| 国产高清精品在线| 亚洲色图欧美偷拍| 欧美高清视频www夜色资源网| 久久不见久久见免费视频1| 国产精品素人一区二区| 欧美亚洲综合色| 激情深爱一区二区| 亚洲美女在线一区| 日韩欧美国产综合| 一本色道久久综合亚洲精品按摩| 全部av―极品视觉盛宴亚洲| 国产精品色哟哟网站| 欧美日韩国产在线播放网站| 国产成人午夜片在线观看高清观看| 亚洲视频精选在线| 欧美成人高清电影在线| 91色porny| 国产伦理精品不卡| 亚洲一区在线播放| 久久久久成人黄色影片| 欧美视频在线一区| 国产高清亚洲一区| 日本不卡1234视频| 亚洲欧美视频一区| 久久天天做天天爱综合色| 欧美日韩国产中文| 91婷婷韩国欧美一区二区| 免费观看日韩av| 亚洲成人av一区二区三区| 国产精品国产成人国产三级 | 成人一区二区在线观看| 亚洲第一电影网| 亚洲丝袜自拍清纯另类|