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

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

?? aes.cpp

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

/*
 * 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
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线播放免费| 亚洲一区二区美女| 日韩激情一区二区| 免费在线观看成人| 在线精品国精品国产尤物884a| 蜜桃免费网站一区二区三区| 国产最新精品免费| 欧美绝品在线观看成人午夜影视| 美国精品在线观看| 成人动漫精品一区二区| 欧美做爰猛烈大尺度电影无法无天| 波多野结衣91| 精品国产精品网麻豆系列| 欧美高清在线视频| 激情久久五月天| 欧美性大战xxxxx久久久| 欧美一区日本一区韩国一区| 国产精品美女一区二区三区| 麻豆成人久久精品二区三区红| 天天亚洲美女在线视频| 成人国产亚洲欧美成人综合网 | 国产精品毛片a∨一区二区三区| 欧美电影免费提供在线观看| 蜜臀av性久久久久av蜜臀妖精| 99精品久久免费看蜜臀剧情介绍| 久久九九全国免费| 欧美三级欧美一级| 亚洲国产日韩在线一区模特| 91精品国产综合久久国产大片| 亚洲自拍欧美精品| 欧美一区二区三区人| 粉嫩一区二区三区在线看| 亚洲精品国久久99热| 在线播放日韩导航| 成人一区二区三区视频| 日韩精品一区第一页| 久久久无码精品亚洲日韩按摩| 国产成人av一区二区三区在线| 2023国产精华国产精品| 亚洲啪啪综合av一区二区三区| 精品综合免费视频观看| 亚洲国产激情av| 成人视屏免费看| 亚洲成人精品影院| 日韩精品综合一本久道在线视频| 日韩在线观看一区二区| 精品久久久久久亚洲综合网 | 欧美一区二区视频免费观看| 麻豆精品在线看| 国产视频一区不卡| 国产精品自拍毛片| 欧美日韩成人高清| 99精品久久99久久久久| 久久99国产精品久久99果冻传媒| 国产精品久久久久永久免费观看 | 91极品视觉盛宴| 午夜精品一区在线观看| 欧美精品一区二区三区蜜桃视频 | 欧美美女一区二区| 经典三级一区二区| 亚洲欧美日本韩国| 久久伊99综合婷婷久久伊| 不卡高清视频专区| 蜜桃视频在线观看一区| 国产精品久久久久影院| 日韩三级在线观看| 在线观看国产一区二区| 国产麻豆精品视频| 日韩精品一级二级| 亚洲激情自拍视频| 中文一区一区三区高中清不卡| 色婷婷综合激情| 成人av在线资源网站| 韩国成人福利片在线播放| 亚洲综合激情网| 一区二区三区色| 亚洲自拍偷拍九九九| 亚洲视频在线观看三级| 国产精品每日更新| 国产精品大尺度| 中文字幕在线不卡一区二区三区| 欧美一区二区三区四区五区| 日本精品免费观看高清观看| av一本久道久久综合久久鬼色| 日本大胆欧美人术艺术动态| 亚洲国产裸拍裸体视频在线观看乱了| 欧美日韩一区二区三区免费看 | 欧美一区二区成人6969| 欧美四级电影网| 欧美一区二区三区播放老司机| 91免费观看视频| 欧美精品久久久久久久多人混战| 91欧美一区二区| 欧美艳星brazzers| 91精品国产丝袜白色高跟鞋| 精品久久久久久久久久久久久久久 | 日韩欧美一级在线播放| 欧美成人女星排行榜| 在线综合视频播放| 久久男人中文字幕资源站| 国产精品三级电影| 亚洲国产欧美在线| 精品一区二区在线免费观看| 国产乱码精品一区二区三区av| 美腿丝袜亚洲色图| 成人黄色小视频| 日韩欧美资源站| 亚洲视频一二三区| 国产一区二区电影| 99国产麻豆精品| 欧美成人一区二区三区片免费| 欧美一区二区网站| 国产精品久久久久国产精品日日| 久久久不卡影院| 蜜臀av性久久久久蜜臀av麻豆| 日本成人中文字幕| 成人福利视频网站| 欧美日本一区二区三区| 日韩一区欧美一区| 国产999精品久久久久久 | 久久亚洲精品小早川怜子| 亚洲伦理在线免费看| 国产suv精品一区二区6| 欧美成人aa大片| 美女视频黄频大全不卡视频在线播放| 婷婷成人激情在线网| 欧美色网一区二区| 亚洲狠狠丁香婷婷综合久久久| 久久99久久久久| 日韩免费一区二区| 九九精品视频在线看| 亚洲欧美怡红院| 91极品美女在线| 午夜欧美2019年伦理| 91碰在线视频| 久久影院视频免费| 91久久人澡人人添人人爽欧美| 在线观看欧美精品| 国产精品久久久久久一区二区三区| 欧美一区二区性放荡片| 亚洲午夜在线观看视频在线| 韩国三级电影一区二区| 国产成人午夜精品5599 | 日本视频中文字幕一区二区三区| 在线不卡中文字幕播放| 久久亚洲欧美国产精品乐播 | 日韩vs国产vs欧美| 国产精品一区二区在线观看不卡| 久久久精品国产99久久精品芒果| 全国精品久久少妇| 国产激情视频一区二区在线观看 | 岛国精品在线播放| 91在线观看下载| 亚洲欧洲无码一区二区三区| 奇米精品一区二区三区四区| 欧美日韩高清在线播放| 日韩成人免费看| 欧美一区二区三区视频免费播放 | 3751色影院一区二区三区| 老色鬼精品视频在线观看播放| 91精品国产综合久久精品app | 精品福利在线导航| k8久久久一区二区三区| 国产精品久久久久久一区二区三区| 成人午夜看片网址| 亚洲成人免费在线观看| 国产精品欧美一级免费| 欧美日韩在线电影| 精品理论电影在线| 欧美videossexotv100| 5566中文字幕一区二区电影 | 91一区二区在线| 日韩一区精品字幕| 午夜视频在线观看一区| 一区二区三区在线观看视频| 国产精品久久久久久久第一福利| 日本高清不卡视频| 欧美中文字幕一区二区三区亚洲| 精品中文字幕一区二区| 久久9热精品视频| 夜夜揉揉日日人人青青一国产精品| 精品视频一区 二区 三区| 久久久美女艺术照精彩视频福利播放| 在线一区二区三区四区五区| 精品国产sm最大网站免费看| 一区二区欧美国产| 成人免费av在线| 国产午夜久久久久| 日韩福利电影在线| 一区二区免费看| 琪琪久久久久日韩精品| 国产精品一区二区免费不卡| 国产大片一区二区| 欧美精品在欧美一区二区少妇| 在线播放一区二区三区| 久久久久国产精品麻豆ai换脸| 久久嫩草精品久久久久| 亚洲成人手机在线| 成人国产亚洲欧美成人综合网| 91亚洲男人天堂|