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

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

?? des算法的c++編寫實現 .txt

?? DES算法C語言實現的源代碼
?? TXT
字號:
DES算法的C++編寫實現 
    下面是我將DES加密解密算法用C++編寫并保存為des.h頭文件,內容如下:
    [說明:其中的傳入的字符數組我暫定義為256,傳入、返回類型為字符的ASCII碼一分為2的字符串(因為漢字的原因,我把每個ASCII字符修改為2個字節的16進制數字字符代替,1個漢字就是4個16進制數字字符)你可以酌情修改以符合你的需要~~C++編碼的運用、風格方面還比較差,請寬恕我吧:p ]
點這打開des.h文件鏈接(本來想C#風格“插入代碼”的,結果字符數有限制)

調用方式如下:
char *sRet=encrypt(char *sInfo , char *sKey, bool  bEnc);
//sInfo是欲加(解)密字符串,sKey是DES密鑰字符串,bEnc為真(加密)、為假(解密),sRet為返回的加(解)密后字符串.

//----------------------------------------------------------------------------------------------
//des.h  
//***DES encrypt head file***
//***by yjm***
//***May. 2005***
#include <iostream.h>
#include <string.h>
char ch[256];//此處可修改一次接受傳入的字符串長度(64的倍數)
unsigned int inf[64],inf1[64],k[64],parity(0),EP[48];//

char* encrypt(char pw[],char key[],bool jiami);
char NumToHex(int x);
char* HexToStr(char ch[]);
bool IsNum(char c);
int CharToNum(char c);
char* StrToHex(char ch[]);
int ip[64]={  
  58,50,42,34,26,18,10, 2,
  60,52,44,36,28,20,12, 4,
  62,54,46,38,30,22,14, 6,
  64,56,48,40,32,24,16, 8,
  57,49,41,33,25,17, 9, 1,
  59,51,43,35,27,19,11, 3,
  61,53,45,37,29,21,13, 5,
  63,55,47,39,31,23,15, 7 };
 int ip1[64]={
  40, 8,48,16,56,24,64,32,
  39, 7,47,15,55,23,63,31,
  38, 6,46,14,54,22,62,30,
  37, 5,45,13,53,21,61,29,
  36, 4,44,12,52,20,60,28,
  35, 3,43,11,51,19,59,27,
  34, 2,42,10,50,18,58,26,
  33, 1,41, 9,49,17,57,25};
 //S盒(1,2,...8)
 int s[8][64]=
 {
  {
   14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,
   3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,
   4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,
   15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13},
  {
   15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14, 
   9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,
   0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2, 
   5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9},
  {
   10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,
   1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1, 
   13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,
   11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12},
  {
   7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,
   1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,
   10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,
   15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14},
  {
   2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1, 
   8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,
   4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13, 
   15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3},
  { 
   12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,
   0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,
   9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,
   7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13},
  { 
   4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10, 
   3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,
   1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7, 
   10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12},
  {
   13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,
   10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,
   1,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,
   0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11}
 };
 int pc1[56]={ //密鑰置換PC-1
   57,49,41,33,25,17,9,
   1,58,50,42,34,26,18,
   10,2,59,51,43,35,27,
   19,11,3,60,52,44,36,
   63,55,47,39,31,23,15,
   7,62,54,46,38,30,22, 
   14,6,61,53,45,37,29, 
   21,13,5,28,20,12,4};
 int pc2[48]={ //密鑰置換PC-2
   14,17,11,24,1,5,
   3,28,15,6,21,10, 
   23,19,12,4,26,8, 
   16,7,27,20,13,2,
   41,52,31,37,47,55,
   30,40,51,45,33,48, 
   44,49,39,56,34,53, 
   46,42,50,36,29,32};
 int E[48]=  //擴展運算E
 {
   32, 1, 2, 3, 4, 5, 
   4, 5, 6, 7, 8, 9, 
   8, 9,10,11,12,13, 
   12,13,14,15,16,17,
   16,17,18,19,20,21,
   20,21,22,23,24,25,
   24,25,26,27,28,29, 
   28,29,30,31,32, 1};
 int P[32]=  //置換P
 {
   16, 7,20,21,
   29,12,28,17,
   1,15,23,26, 
   5,18,31,10,
   2, 8,24,14, 
   32,27, 3, 9,
   19,13,30, 6,
   22,11, 4,25};


unsigned int cd[56],ki[16][48],kt[56],c[8],f[32];
void LS(int n)   //密鑰左移函數
{
 int c0,d0,c1,d1;
 c0=cd[0];
 c1=cd[1];
 d0=cd[28];
 d1=cd[29];
 if(n==1||n==2||n==9||n==16)
 {
  for(int i=0;i<55;i++) 
   cd[i]=cd[i+1]; 
  cd[27]=c0;
  cd[55]=d0;
 }
 else{
  for(int i=0;i<54;i++)
   cd[i]=cd[i+2];
  cd[26]=c0;
  cd[27]=c1;
  cd[54]=d0;
  cd[55]=d1;
 }
}
char* encrypt(char pw[],char key[],bool jiami)
{ 
 char *p,*p1; 
 p=pw;
 p1=key;
 int temp;
 //產生初始密鑰流(64 bit).............可以自動擴展密鑰長度 取前8字節
 for(int i=0;i<8;i++)
 {
  if(*p1=='\0')
   p1=key;  
  temp=int(*p1);
  for(int j=0;j<7;j++)
  {   
   k[8*i-j+6]=temp%2;
   parity+=temp%2;
   temp/=2;
  };
  k[8*(i+1)-1]=parity%2;
  parity=0;
  p1++;
 } 
//密鑰置換 PC-1 
 for(i=0;i<28;i++)
 {
  cd[i]=k[pc1[i]-1];
  cd[i+28]=k[pc1[i+28]-1];   
 } 
 
//密鑰置換 PC-2 &&產生Ki(i=1,2...16)
 for(i=0;i<16;i++)
 {
  LS(i+1);
  for(int j=0;j<48;j++)  
   ki[i][j]=cd[pc2[j]-1];  
 }

 //////////////////...................................................... 
 int len=strlen(pw),len1(0),*pp,*pp1;
 if(len%16>0)
  len1=16-len%16;
 pp=new int [(len+len1)*4];
 pp1=new int [(len+len1)*4];
 
 if(len1>0)
  for(int i=0;i<4*len1;i++)
   pp[len*4+i]=0;//不足64bit時用0補齊
 
 for(int t=0;t<len;t++)//明文組
 {
  temp=int(*(p+t));
  if(temp<=57&&temp>=48)
   temp-=48;
  else if(temp<=90&&temp>=65)
   temp-=55;
  for(int i=0;i<4;i++)
  {
   pp[4*t-i+3]=temp%2;
   temp/=2;   
  } 
 } 

 for(t=0;t<(len-1)/16+1;t++)//明文按64bit分組
 {
  for(int i=0;i<64;i++)  
    inf1[i]=pp[t*64+i]; 
   
  for(int m=0;m<64;m++) 
   inf[m]=inf1[ip[m]-1]; 
  //距陣分左右2邊 L0 (0-31)和 R0(32-63)  
  //f函數運算  
  for(int kx=0;kx<16;kx++)
  {   //對Ri作E擴展   
   for(int j=0;j<48;j++)
   {   //A(32bit)⊕E→E(A)(48bit) ...   E(A)⊕J
    if(jiami)
     EP[j]=inf[E[j]+31]^ki[kx][j];//加密********************
    else
     EP[j]=inf[E[j]+31]^ki[15-kx][j];//解密*****************
   }  
   for(j=0;j<8;j++)
   {
    temp=EP[j*6]*32+EP[j*6+1]*16+EP[j*6+2]*8+EP[j*6+3]*4+EP[j*6+4]*2+EP[j*6+5];
    c[j]=s[j][temp];
    for(int k=0;k<4;k++)//48bit--->32bit
    {
     EP[4*j+3-k]=c[j]%2;
     c[j]/=2;   
    }     
   }   
   for(j=0;j<32;j++)
   {    //P置換→f(A,J)(32bit)   
    f[j]=inf[j]^EP[P[j]-1];//L⊕f(R,K)
    if(kx!=15)
    {
     inf[j]=inf[j+32];
     inf[j+32]=f[j];
    }
    else   
     inf[j]=f[j];
   }
   
  }
  
  //逆初始置換IP-1
  for(i=0;i<64;i++) 
   pp1[64*t+i]=inf[ip1[i]-1]; 
 }

 temp=(len+len1); 
 char tt[256];//對應ch的長度
 for(i=0;i<temp;i++) 
  tt[i]=NumToHex(pp1[4*i]*8+pp1[4*i+1]*4+pp1[4*i+2]*2+pp1[4*i+3]); 
 tt[temp]='\0';///
 strcpy(ch,tt);

 delete []pp;
 delete []pp1;

 return ch;
}
char NumToHex(int x)
{ 
 if(x>=0&&x<=9)
  return char(x+48);
 if(x>=10&&x<=15)
  return char(x+55);
 return '?';
}
char* HexToStr(char ch[])
{
 int len=strlen(ch)/2,temp;
 for(int i=0;i<len;i++)
 { 
  temp=CharToNum(ch[2*i])*16+CharToNum(ch[2*i+1]);
  if(temp>127)
   temp=128-temp;
  ch[i]=char(temp); 
 }
 ch[len]='\0';
 return ch;
}
bool IsNum(char c)
{
 if(c<='9'&&c>='0')
  return true;
 else 
  return false;
}
int CharToNum(char c)
{
 if(c<='9'&&c>='0')
  return int(c)-48;
 if(c<='Z'&&c>='A')
  return int(c)-55;
 if(c<='z'&&c>='a')
  return int(c)-87;
 return -1;
}
char* StrToHex(char* ch)
{
 int len=lstrlen(ch),n;
 char str[256];
 memset(str,0,256);
 memcpy(str,ch,strlen(ch));
 for(int i=len-1;i>=0;i--)
 {
  n=int(str[i]);
  if(n<0)
   n=128-n; 
  str[2*i]=NumToHex((n&0xf0)/16);
  str[2*i+1]=NumToHex(n&0x0f); 
 }
 //follow for DES's 64bit ////
 ///////////////////////////////
// str[len*2]='\0';
 strcpy(ch,str);
 
 return ch; 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情在线观看视频免费| 国产91清纯白嫩初高中在线观看| 久久影院电视剧免费观看| 欧美性一级生活| 欧美色综合网站| 欧美日韩精品福利| 在线不卡中文字幕| 欧美v亚洲v综合ⅴ国产v| 26uuu精品一区二区| 欧美国产精品一区| 中文字幕一区二区三区四区不卡 | 91精品国产综合久久久久久 | 国产欧美日韩另类视频免费观看| 爽好多水快深点欧美视频| 亚洲在线观看免费视频| 亚洲一二三区在线观看| 男人操女人的视频在线观看欧美| 麻豆精品新av中文字幕| 国产成人在线色| av电影天堂一区二区在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 99精品偷自拍| 欧美日韩免费电影| ww亚洲ww在线观看国产| 中文字幕一区二区三区不卡| 亚洲一区二区精品久久av| 精品一区二区国语对白| 99精品视频在线播放观看| 欧美乱妇一区二区三区不卡视频| 精品国内二区三区| 亚洲精品中文字幕乱码三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品一二三在| 精品视频在线免费看| 久久久精品黄色| 亚洲地区一二三色| 成人v精品蜜桃久久一区| 欧美图区在线视频| 国产精品麻豆一区二区| 日本最新不卡在线| 色婷婷av久久久久久久| www国产精品av| 午夜a成v人精品| 99精品欧美一区二区三区小说 | 在线电影国产精品| 国产欧美精品一区二区色综合朱莉| 亚洲一区二区三区四区中文字幕| 蜜桃av一区二区| 欧美日韩中文另类| 国产精品视频线看| 精品一区二区在线视频| 欧美日韩一卡二卡三卡| 一区精品在线播放| 福利电影一区二区| 久久新电视剧免费观看| 裸体一区二区三区| 欧美日韩精品一区二区三区四区| 一区视频在线播放| 成人小视频免费在线观看| 欧美成人r级一区二区三区| 亚洲高清免费观看| 在线视频观看一区| 亚洲精品国产一区二区精华液| 成人午夜av影视| 国产欧美日本一区视频| 国产精品一区二区久激情瑜伽| 日韩色视频在线观看| 日韩精品电影一区亚洲| 欧美日韩情趣电影| 亚洲第一精品在线| 欧美区在线观看| 日韩一区欧美二区| 日韩女优电影在线观看| 老汉av免费一区二区三区| 欧美成人午夜电影| 韩国视频一区二区| 国产亚洲精品资源在线26u| 精品一区二区国语对白| 欧美精品一区二区在线播放| 免费在线观看精品| 欧美成人性战久久| 国产精品影视在线观看| 国产精品不卡在线| 色偷偷88欧美精品久久久| 艳妇臀荡乳欲伦亚洲一区| 欧美性受极品xxxx喷水| 亚洲.国产.中文慕字在线| 在线播放/欧美激情| 国产又粗又猛又爽又黄91精品| 亚洲精品一区二区三区四区高清| 国产精品中文字幕日韩精品| 国产精品电影一区二区| 在线国产电影不卡| 奇米一区二区三区av| 欧美精品一区二区三区视频| 成人综合在线观看| 亚洲自拍偷拍麻豆| 欧美一级二级三级乱码| 国产98色在线|日韩| 一区二区在线看| 欧美一级xxx| 成人影视亚洲图片在线| 亚洲一区免费在线观看| 欧美不卡一区二区| 色av一区二区| 久久精品国产免费看久久精品| 中文乱码免费一区二区| 欧美日韩电影在线播放| 成人性视频网站| 五月综合激情婷婷六月色窝| 国产欧美日韩亚州综合 | 高清久久久久久| 亚洲成在线观看| 国产欧美日韩视频一区二区| 欧美日韩成人综合天天影院 | 日韩一区二区三区精品视频| 粗大黑人巨茎大战欧美成人| 亚洲第一激情av| 国产精品视频一二三| 日韩一区二区免费视频| 色综合久久久网| 激情五月婷婷综合网| 亚洲自拍欧美精品| 国产精品美女久久久久aⅴ| 日韩一卡二卡三卡四卡| 在线观看视频91| 成人app在线观看| 国产在线播放一区| 日产精品久久久久久久性色| 亚洲蜜桃精久久久久久久| 国产欧美日本一区二区三区| 日韩一区二区三区四区| 欧美亚洲高清一区二区三区不卡| 国产精品亚洲午夜一区二区三区 | 日韩精品乱码免费| 国产精品久久久久久亚洲伦| 日韩亚洲电影在线| 欧美日韩一区二区欧美激情| 日本精品一区二区三区四区的功能| 国产成人午夜精品影院观看视频| 蜜桃久久久久久| 热久久一区二区| 日本免费新一区视频| 午夜av电影一区| 视频一区国产视频| 天天亚洲美女在线视频| 亚洲国产精品久久艾草纯爱| 亚洲一区二区在线视频| 亚洲综合视频网| 亚洲综合清纯丝袜自拍| 亚洲成a人片综合在线| 亚洲福利视频一区| 日韩黄色免费网站| 久久精品99国产精品日本| 日本不卡视频在线| 美女脱光内衣内裤视频久久网站 | 中文欧美字幕免费| 国产精品每日更新| 综合久久久久综合| 亚洲最快最全在线视频| 午夜天堂影视香蕉久久| 亚洲va韩国va欧美va精品| 蜜臀av一区二区三区| 国产一区二区免费在线| 风间由美一区二区av101| 成人动漫一区二区| 在线精品视频免费观看| 日韩欧美一区二区三区在线| 久久色.com| 一区二区三区在线观看网站| 午夜伊人狠狠久久| 久久99精品久久久久| 成人免费看的视频| 欧美日韩一区二区三区四区| 日韩一区二区三区视频| 国产精品美女久久久久久| 亚洲午夜激情网站| 经典三级视频一区| 色一区在线观看| 欧美白人最猛性xxxxx69交| 欧美极品xxx| 亚洲福利一区二区三区| 国产一本一道久久香蕉| 色婷婷国产精品| 久久日韩精品一区二区五区| 中文字幕字幕中文在线中不卡视频| 亚洲大尺度视频在线观看| 国产精品一区二区91| 欧美在线免费播放| www激情久久| 亚洲成国产人片在线观看| 国产91精品露脸国语对白| 欧美福利电影网| 国产精品久99| 精品一区二区三区蜜桃| 在线精品视频小说1| 中文字幕高清不卡| 美女久久久精品| 欧美日本在线看| 亚洲色欲色欲www|