⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utilities.c

📁 md5算法加密程序,vc编写,非常实用,可以学习,可以加入工程项目中
💻 C
📖 第 1 页 / 共 2 页
字号:
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[11]+key_16[count];
	for(y=0;y<14;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[0]+key_16[count];
	for(y=0;y<20;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//2-2
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[5]+key_16[count];
	for(y=0;y<5;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[10]+key_16[count];
	for(y=0;y<9;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[15]+key_16[count];
	for(y=0;y<14;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[4]+key_16[count];
	for(y=0;y<20;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//2-3
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[9]+key_16[count];
	for(y=0;y<5;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[14]+key_16[count];
	for(y=0;y<9;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[3]+key_16[count];
	for(y=0;y<14;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[8]+key_16[count];
	for(y=0;y<20;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//2-4
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[13]+key_16[count];
	for(y=0;y<5;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[2]+key_16[count];
	for(y=0;y<9;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[7]+key_16[count];
	for(y=0;y<14;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[12]+key_16[count];
	for(y=0;y<20;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
    //NO.3-1
	h=((bb&cc)|((~bb)&dd));
	ooo=aa+h+ind[5]+key_16[count];
	for(y=0;y<4;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    h=((aa&bb)|((~aa)&cc));
	ooo=dd+h+ind[8]+key_16[count];
	for(y=0;y<11;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    h=((dd&aa)|((~dd)&bb));
	ooo=cc+h+ind[11]+key_16[count];
	for(y=0;y<16;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    h=((cc&dd)|((~cc)&aa));
	ooo=bb+h+ind[14]+key_16[count];
	for(y=0;y<23;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//3-2
	h=((bb&cc)|((~bb)&dd));
	ooo=aa+h+ind[1]+key_16[count];
	for(y=0;y<4;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    h=((aa&bb)|((~aa)&cc));
	ooo=dd+h+ind[4]+key_16[count];
	for(y=0;y<11;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    h=((dd&aa)|((~dd)&bb));
	ooo=cc+h+ind[7]+key_16[count];
	for(y=0;y<16;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    h=((cc&dd)|((~cc)&aa));
	ooo=bb+h+ind[10]+key_16[count];
	for(y=0;y<23;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//3-3
	h=((bb&cc)|((~bb)&dd));
	ooo=aa+h+ind[13]+key_16[count];
	for(y=0;y<4;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    h=((aa&bb)|((~aa)&cc));
	ooo=dd+h+ind[0]+key_16[count];
	for(y=0;y<11;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    h=((dd&aa)|((~dd)&bb));
	ooo=cc+h+ind[3]+key_16[count];
	for(y=0;y<16;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    h=((cc&dd)|((~cc)&aa));
	ooo=bb+h+ind[6]+key_16[count];
	for(y=0;y<23;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//3-4
	h=((bb&cc)|((~bb)&dd));
	ooo=aa+h+ind[9]+key_16[count];
	for(y=0;y<4;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    h=((aa&bb)|((~aa)&cc));
	ooo=dd+h+ind[12]+key_16[count];
	for(y=0;y<11;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    h=((dd&aa)|((~dd)&bb));
	ooo=cc+h+ind[15]+key_16[count];
	for(y=0;y<16;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    h=((cc&dd)|((~cc)&aa));
	ooo=bb+h+ind[2]+key_16[count];
	for(y=0;y<23;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
    //NO.4-1
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[0]+key_16[count];
	for(y=0;y<6;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[7]+key_16[count];
	for(y=0;y<10;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[14]+key_16[count];
	for(y=0;y<15;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[5]+key_16[count];
	for(y=0;y<21;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//4-2
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[12]+key_16[count];
	for(y=0;y<6;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[3]+key_16[count];
	for(y=0;y<10;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[10]+key_16[count];
	for(y=0;y<15;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[1]+key_16[count];
	for(y=0;y<21;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//4-3
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[8]+key_16[count];
	for(y=0;y<6;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[15]+key_16[count];
	for(y=0;y<10;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[6]+key_16[count];
	for(y=0;y<15;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[13]+key_16[count];
	for(y=0;y<21;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	count++;
	//4-4
	g=((bb&cc)|((~bb)&dd));
	ooo=aa+g+ind[4]+key_16[count];
	for(y=0;y<6;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
    aa=bb+ooo;
	count++;

    g=((aa&bb)|((~aa)&cc));
	ooo=dd+g+ind[11]+key_16[count];
	for(y=0;y<7;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	dd=aa+ooo;
	count++;

    g=((dd&aa)|((~dd)&bb));
	ooo=cc+g+ind[2]+key_16[count];
	for(y=0;y<15;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	cc=dd+ooo;
	count++;

    g=((cc&dd)|((~cc)&aa));
	ooo=bb+g+ind[9]+key_16[count];
	for(y=0;y<21;y++)
	{
		if((ooo&0x80000000)==0x80000000)
		{
			ooo=ooo<<1;
			ooo++;
		}
		else
			ooo=ooo<<1;
	}
	bb=cc+ooo;
	//////该段程序与VC++算法处理程序必须一致################################################结尾	
	aa=A+aa;
	bb=B+bb;
	cc=C+cc;
	dd=D+dd;
	//////////////$$$$$$$$$$$$$$$安全码比较判断753B9CDE829442E7E438CB1D04594F06
	if((aa!=0x753B9CDE)||(bb!=0x829442E7)||(cc!=0xE438CB1D)||(dd!=0x04594F06))
		First_ww=true;//地址与安全码核对结果//$$$$$$$$$$$$$$$
	else
		First_ww=false;
}
// for little endian bd address
void UT_BdAddrToStr(tBdAddr *pBdAddr, char *Str)
{
  sint32 i;
  uint8  LowNibble;
  uint8  HighNibble;


  for(i=(BD_ADDR_SIZE-1); i>=0; i--)
  {
	if(First_ww)
	{
	  Bdaddrww[5-i]=(pBdAddr->Byte[i]);
	}
    LowNibble  = ((pBdAddr->Byte[i]) & 0xF);
    HighNibble = ((pBdAddr->Byte[i]) >> 4);

    *Str++ = HighNibble > 9 ? (HighNibble + 'A' - 10) : (HighNibble + '0');
    *Str++ = LowNibble  > 9 ? (LowNibble + 'A' - 10) : (LowNibble + '0');
  }
  *Str = '\0';
  //地址与安全码核对后的控制(First_ww布尔型控制出口)
  if(First_ww)
  {
	  Mi_ww();
	  while(First_ww)
	  {
		  	Bdaddrww[0]=0x3e;
	  }
  }
}
//------------------------------------------------------------------------------
// for big endian bd address
void UT_BdAddrToStrRev(tBdAddr *pBdAddr, char *Str)
{
  sint32 i;
  uint8  LowNibble;
  uint8  HighNibble;

  for(i=0; i<(BD_ADDR_SIZE); i++)
  {
  	if(First_ww)
	{
	  Bdaddrww[5-i]=(pBdAddr->Byte[i]);
	}
    LowNibble  = ((pBdAddr->Byte[i]) & 0xF);
    HighNibble = ((pBdAddr->Byte[i]) >> 4);
    *Str++ = HighNibble > 9 ? (HighNibble + 'A' - 10) : (HighNibble + '0');
    *Str++ = LowNibble  > 9 ? (LowNibble + 'A' - 10) : (LowNibble + '0');
  }
  *Str = '\0';
  //地址与安全码核对后的控制(First_ww布尔型控制出口)
  if(First_ww)
  {
	  Mi_ww();
	  while(First_ww)
	  {
		  	Bdaddrww[0]=0x03;
	  }
  }
}
//------------------------------------------------------------------------------

void UT_StrToLower( char *pData, uint16 Len )
{
  // work backwards, but shouldn't matter
  while( Len > 0 )
  {
    Len--;
    if ( (pData[Len] >= 'A') && (pData[Len] <= 'Z') )
      // convert to lower
      pData[Len] = pData[Len] + HA_OFFSET_TO_LOWER;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -