打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跨平台C++ 对称加密解密函数

跨平台C++ 对称加密解密函数

(2005-05-26 11:31:40)


void Encrypt(unsigned char* pdata,int len,unsigned longkey0,unsigned long key1)
{
 union sDWORD
 {
  unsigned long ldata;
  unsigned char b[4];
 };

 union sWORD
 {
  short a;
  struct
  {
  unsigned char b0;
  unsigned char b1;
  }b;
 };

 union DISPLAY
 {
  struct{ unsigned charv; }B;
  struct {
   unsigned charb0 :1; unsigned charb1 :1; unsigned charb2 :1; unsigned charb3 :1; unsigned charb4 :1; unsigned charb5 :1; unsigned charb6 :1; unsigned charb7 :1;
  }b;
 };

 unsigned char *ps=pdata;
 int ByteLengthBak=len;
 union sDWORD p;
 union sDWORD k;
 DISPLAY c;
 p.ldata=key1;
 k.ldata=key0;
 char buffer1,buffer2;
 unsigned char RBKEY=p.b[0];
 unsigned char RBKEY1=p.b[3];
 unsigned char RBKEY2=p.b[1];
 unsigned char RBKEY3=p.b[2];
 RBKEY^=key0;

 buffer1=p.b[1];
 p.b[1]=k.b[3];
 buffer2=p.b[3];
 p.b[3]=k.b[1];
 k.b[1]=buffer1;
 k.b[3]=buffer2;

 int count=0;
 while(len)
 {
  if (count==8) count=0;
  if(count<4)
  {
 *(pdata++)^=k.b[count];
  }
  else
  {
 *(pdata++)^=p.b[count-4];
  }
  count++;
  len--;
 }
 for(int ii=0;ii<ByteLengthBak;ii++)
 {
  ps[ii]=ps[ii]^(RBKEY);
  c.B.v=ps[ii];
  c.b.b0^=(RBKEY1&0x1);
  c.b.b2^=((RBKEY1&0x2)>>1);
  c.b.b4^=((RBKEY1&0x4)>>2);
  c.b.b6^=((RBKEY1&0x8)>>3);
  c.b.b7^=((RBKEY1&0x80)>>7);
  c.b.b1^=c.b.b3;
  c.b.b3^=c.b.b5;
  c.b.b5^=c.b.b7;

  c.b.b5^=p.b[0];
  c.b.b3^=p.b[1];
  c.b.b1^=p.b[2];
  c.b.b7^=p.b[3];

  c.b.b0^=(RBKEY2&0x1);
  c.b.b2^=((RBKEY3&0x4)>>1);
  c.b.b4^=((RBKEY2&0x8)>>3);
  c.b.b6^=((RBKEY3&0x80)>>7);
 }
}

void Encrypt(unsigned char* pdata,int len,string key)
{
 CMD5 md5;
 md5.GenerateMD5 ((unsigned char*)key.c_str (),key.length());
 Encrypt(pdata,len,md5.m_data[0]^md5.m_data[3],md5.m_data[1]^md5.m_data[2]);
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++自己实现MD5算法 | 求索阁
C语言位域的使用及其注意点
C++无锁循环缓冲实现
下载了个zlib123,用法简单说明
在iOS AudioQueue中用Speex进行编码和解码
51单片机的模拟串口代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服