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

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

?? yingying.cpp

?? 加密解密現(xiàn)代密碼學(xué)的內(nèi)容c語(yǔ)言編寫uoto
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include<stdio.h>
#include<malloc.h>
#define MAX_NUM 40

static long (*sp)[64];
/*二維數(shù)組sp[8][64]中存放輪函數(shù)中經(jīng)過(guò)"S盒代換/選擇和P置換"后的所有可能輸出結(jié)果*/
/*注:具體說(shuō)明詳見(jiàn)函數(shù)spinit,函數(shù)spinit先于DES加密過(guò)程進(jìn)行*/

static unsigned char (*kn)[8];
/*當(dāng)用戶輸入初始密鑰之后,二維數(shù)組kn[16][8]中將存放由初始密鑰生成的16輪子密鑰*/
/*關(guān)于kn的操作函數(shù)setkey獨(dú)立于DES加密過(guò)程進(jìn)行*/

static char (*iperm)[16][8];    /*用于初始置換*/
static char (*fperm)[16][8];    /*用于逆初始置換*/


static int bytebit[]={0200,0100,040,020,010,04,02,01};
/*任意一個(gè)小于256(二進(jìn)制表示為100000000)的數(shù)與bytebit的第i個(gè)數(shù)作按位與運(yùn)算,將*/
/*可得到這個(gè)數(shù)二進(jìn)制表示中的第i+1比特(數(shù)組下標(biāo)從0開(kāi)始).若二進(jìn)制表示不足八位,*/
/*程序默認(rèn)高位自動(dòng)填0*/
/*例如14(即00001110)這個(gè)數(shù)與bytebit中的各個(gè)數(shù)作按位于運(yùn)算,依次得到0,0,0,0,1,1,*/
/*1,0. 具體使用詳見(jiàn)函數(shù)setkey*/

static int nibblebit[]={010,04,02,01}; /*用于一些函數(shù)中的輔助計(jì)算*/

static int permute(char *,char [16][16][8],char *);  /*見(jiàn)此函數(shù)體里的說(shuō)明*/
static void round(int ,unsigned long *);             /*見(jiàn)此函數(shù)體里的說(shuō)明*/
static void spinit();          /*見(jiàn)此函數(shù)體里的說(shuō)明*/
static void perminit(char [16][16][8],char [64]);    /*見(jiàn)此函數(shù)體里的說(shuō)明*/
static long f(unsigned long, unsigned char [8]);     /*見(jiàn)此函數(shù)體里的說(shuō)明*/


/*明文所要進(jìn)行的初始置換的比特變換順序*/
static char ip[]={
    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
    };

/*逆初始置換的比特變換順序*/
static char fp[]={
    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
};


#ifdef notdef
/*輪函數(shù)中選擇擴(kuò)展運(yùn)算比特存放順序*/
  static char ei[]={
    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
  };
#endif


/*密鑰編排的初始置換的比特變換順序*/
static char pc1[]={
    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,
};


/*存放密鑰編排的16輪置換中左循環(huán)移位的位數(shù)*/
static char totrot[]={
    1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28
}
/*注:totrot[i]實(shí)際存放的是當(dāng)前輪與之前所有輪循環(huán)左移位數(shù)的總和,具體應(yīng)用詳見(jiàn)函*/
/*數(shù)setkey*/;


/*密鑰編排的16輪置換中所用到的比特變換順序*/
static char pc2[]={
    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
};

/*S盒*/
static char si[8][64]={
    /*s1*/
    14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
    0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
    4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
    15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,

    /*s2*/
    15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,
    3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,
    0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,
    13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,

    /*s3*/
    10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,
    13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,
    13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,
    1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,

    /*s4*/
    7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
    13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,
    10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,
    3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,


    /*s5*/
    2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,
    14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,
    4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,
    11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,

    /*s6*/
    12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,
    10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,
    9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,
    4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,

    /*s7*/
    4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,
    13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,
    1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,
    6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,

    /*s8*/
    13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,
    1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,
    7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,
    2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11
};


/*輪換數(shù)中置換預(yù)算的比特變換順序*/
static char p32i[]={
    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
};


int desinit(){

    /*對(duì)DES操作中會(huì)用的一些變量進(jìn)行初始化*/

    if(sp!=NULL)   return 0;

    if((sp=(long(*)[64])malloc(sizeof(long)*8*64))==NULL)    
        return -1;
    /*初始化二維數(shù)組sp[8][64]*/

    spinit();  /*功能詳見(jiàn)spinit函數(shù)定義處*/

    kn=(unsigned char (*)[8])malloc(sizeof(char)*8*16);
    /*初始化二維數(shù)組kn[16][8]*/

    if(kn==NULL){
       free((char *)sp);
       return -1;
    }

    iperm=(char(*)[16][8])malloc(sizeof(char)*16*16*8);
    /*初始化三維數(shù)組iperm[16][16][8]*/
    if(iperm==NULL){
        free((char *)sp);
        free((char *)kn);
        return -1;
    }
    perminit(iperm,ip);

    fperm=(char(*)[16][8])malloc(sizeof(char)*16*16*8);
    /*初始化三維數(shù)組fperm[16][16][8]*/
    if(fperm==NULL){
       free((char *)sp);
       free((char *)kn);
       free((char *)iperm);
       return -1;
    }
    perminit(fperm,fp);
    return 0;
}

void desdone(){
    
    /*此函數(shù)作用為回收DES加密過(guò)程中所占用的空間*/
    
    if(sp==NULL)
        return;      

    free((char *)sp);
    free((char *)kn);

    if(iperm!=NULL)    free((char *)iperm);
    if(fperm!=NULL)    free((char *)fperm);

    sp=NULL;
    iperm=NULL;
    fperm=NULL;
    kn=NULL;
    return;
}


void setkey(char *key){
    /* 用戶輸入64bit初始密鑰,只將使用56bit*/
    /*當(dāng)用戶輸入初始密鑰之后,經(jīng)此函數(shù)二維數(shù)組kn[16][8]中將存放由初始密鑰生成的*/
    /*16輪子密鑰*/
    /*此程序先于DES加密過(guò)程(函數(shù)endes)進(jìn)行*/

    char pclm[56]; /*存放初始密鑰經(jīng)置換表pc1[64]置換后每一比特*/
    char pcr[56]; /*存放當(dāng)前輪左移后的結(jié)果*/
    register int i,j,l;
    int m;

    /* 初始化kn */
    for(i=0;i<16;i++)
       for(j=0;j<8;j++)
          kn[i][j]=0;

    for(j=0;j<56;j++){         /* 把key[]按置換表pc1[]轉(zhuǎn)成比特存儲(chǔ)*/
       l=pc1[j]-1;              /* 用戶輸入的key[]的下標(biāo)從0開(kāi)始,要減1*/
       m=l&07;
       pclm[j]=(key[l>>3]&bytebit[m])?1:0;
    }

    /*l按比特共6位.l的高3比特位位決定在key[]中第幾字節(jié)即在key[]中的下標(biāo),*/
    /*l的低3位決定在key[]某個(gè)字節(jié)(即下標(biāo))的某個(gè)比特*/

    for(i=0;i<16;i++){
        for(j=0;j<56;j++)
          pcr[j]=pclm[(l=j+totrot[i])<(j<28?28:56)?l:l-28];
          /*循環(huán)左移*/
       for(j=0;j<48;j++) {

          if(pcr[pc2[j]-1]){

             l=j%6;
             kn[i][j/6]|=bytebit[l]>>2;
            /*將移位后的結(jié)果經(jīng)pc-2置換表的48bit存入本輪密鑰存儲(chǔ)器kn中*/

          }
       }
    }
}


void endes(char *block){

    /*此函數(shù)實(shí)現(xiàn)DES加密的過(guò)程(在函數(shù)desinit,setkey被調(diào)用后,才會(huì)執(zhí)行此函數(shù))*/

    register int i;
    unsigned long work[2];   /*存放輪函數(shù)迭代中當(dāng)前輪的左右分組各32bit*/
    long tmp;

    permute(block,iperm,(char *)work);   /*初始置換*/

/*    printf("分別加密的16輪每輪所得結(jié)果為:\n");
     // 以下進(jìn)行16輪迭代
    for(i=0;i<16;i++)
        round(i,work);
    getch();                     */
    /* 16輪迭代后,還要將左右各32bit交換一下 */
    tmp=work[0];
    work[0]=work[1];
    work[1]=tmp;

    permute((char *)work,fperm,block);   /*逆初始置換*/
    printf("\n\n");
}



void  dedes(char *block){

    /*此函數(shù)實(shí)現(xiàn)DES解密 */
    register int i;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一级精品在线| 欧美做爰猛烈大尺度电影无法无天| 亚洲欧美日韩一区二区三区在线观看| 欧美精品成人一区二区三区四区| 国产高清亚洲一区| 日本麻豆一区二区三区视频| 中文字幕日本不卡| 2024国产精品视频| 欧美高清视频不卡网| av成人免费在线观看| 国产在线视频不卡二| 视频在线观看一区二区三区| 一区二区三区中文字幕| 欧美激情在线观看视频免费| 日韩欧美中文字幕公布| 欧美三级午夜理伦三级中视频| 成人动漫一区二区三区| 国产精品影视网| 久久er99热精品一区二区| 日韩国产欧美一区二区三区| 亚洲免费大片在线观看| 国产精品久久一卡二卡| 久久久午夜精品理论片中文字幕| 日韩一区二区三区av| 欧美视频一区二| 欧美性三三影院| 色国产精品一区在线观看| 成人aaaa免费全部观看| 成人免费看黄yyy456| 国产成人丝袜美腿| 国产东北露脸精品视频| 国产不卡视频一区| 国产精品456露脸| 国产美女视频91| 激情欧美一区二区| 精东粉嫩av免费一区二区三区| 日韩av一二三| 蜜臀精品久久久久久蜜臀| 日本成人超碰在线观看| 轻轻草成人在线| 老鸭窝一区二区久久精品| 日韩精品一二区| 蜜桃视频一区二区三区在线观看| 日韩av成人高清| 乱一区二区av| 国产一区二区精品久久| 大陆成人av片| 97久久精品人人做人人爽50路| 99re6这里只有精品视频在线观看| 91麻豆免费在线观看| 日本丰满少妇一区二区三区| 在线观看不卡一区| 欧美电影在线免费观看| 精品国内二区三区| 国产精品入口麻豆九色| 亚洲欧美国产毛片在线| 天天综合色天天综合| 久久不见久久见免费视频1 | 美女精品一区二区| 久久99日本精品| 成人爽a毛片一区二区免费| 一本一道久久a久久精品 | 国产精品一级在线| 99久久精品免费看| 欧美日韩国产乱码电影| 久久久亚洲欧洲日产国码αv| 最新国产成人在线观看| 偷偷要91色婷婷| 国产一区二区三区蝌蚪| www.久久精品| 91精品久久久久久蜜臀| 国产夜色精品一区二区av| 亚洲人成精品久久久久| 日韩国产成人精品| 国产凹凸在线观看一区二区| 91美女精品福利| 日韩精品一区二区三区在线播放| 欧美国产精品中文字幕| 午夜精品一区二区三区免费视频| 国产精品一级片在线观看| 在线精品观看国产| 久久蜜桃av一区精品变态类天堂| 亚洲免费三区一区二区| 久久99蜜桃精品| 欧洲av一区二区嗯嗯嗯啊| 久久综合久久鬼色中文字| 一区二区三区欧美日韩| 国产一区亚洲一区| 欧美日韩精品久久久| 国产欧美日韩亚州综合| 日韩精品1区2区3区| 成人性生交大片免费看视频在线| 欧美日本一区二区| 国产精品丝袜一区| 日韩av高清在线观看| 91在线视频18| 久久久精品黄色| 免费美女久久99| 色先锋久久av资源部| 久久天堂av综合合色蜜桃网| 亚洲丶国产丶欧美一区二区三区| 国产不卡免费视频| 精品国产伦理网| 亚洲国产色一区| 97久久精品人人澡人人爽| 日韩免费视频一区| 亚洲成人av一区| 91色在线porny| 国产日韩三级在线| 精品一区免费av| 在线播放日韩导航| 一区二区国产盗摄色噜噜| 成人午夜激情影院| 国产网站一区二区| 国产一区二区毛片| 精品国产乱码久久| 日本成人在线一区| 欧美疯狂性受xxxxx喷水图片| 亚洲美女免费在线| 成+人+亚洲+综合天堂| 国产亚洲欧美日韩日本| 狠狠色狠狠色综合系列| 精品欧美乱码久久久久久| 奇米影视在线99精品| 在线成人小视频| 日韩电影免费一区| 欧美日韩一区二区三区免费看| 亚洲精品国产高清久久伦理二区| 99麻豆久久久国产精品免费| 国产欧美日韩三级| 懂色av一区二区在线播放| 久久久亚洲精品一区二区三区| 国产在线精品一区二区三区不卡| 日韩视频一区二区在线观看| 蜜桃视频一区二区三区| 日韩欧美成人一区| 国产一区在线看| 欧美国产乱子伦| 91日韩在线专区| 亚洲欧洲综合另类| 91久久免费观看| 亚洲午夜精品在线| 欧美久久久久久久久中文字幕| 日韩黄色免费电影| 日韩女优毛片在线| 国产高清在线观看免费不卡| 中文字幕一区视频| 一本大道久久a久久精品综合| 亚洲综合视频网| 91麻豆精品91久久久久同性| 老司机免费视频一区二区| 久久女同精品一区二区| av中文字幕一区| 亚洲成人av免费| 精品国产91乱码一区二区三区| 韩国一区二区视频| 国产精品白丝在线| 欧美性猛交xxxx黑人交| 免费成人av在线播放| 久久免费国产精品| 91麻豆福利精品推荐| 亚洲国产成人av好男人在线观看| 欧美电视剧在线看免费| 高清久久久久久| 亚洲一区二区三区美女| 欧美mv日韩mv国产网站| 成人av动漫在线| 日韩专区在线视频| 久久久精品免费网站| 欧美伊人精品成人久久综合97| 蜜桃av噜噜一区| 中文字幕一区二区三区在线播放 | 7777精品伊人久久久大香线蕉完整版| 久久99精品久久久| 亚洲色图制服诱惑| 日韩免费一区二区三区在线播放| a在线欧美一区| 日日夜夜精品视频天天综合网| 国产亚洲综合色| 欧美色图12p| 成人av网址在线| 日韩精品五月天| 国产精品色哟哟网站| 日韩一级高清毛片| 色欧美88888久久久久久影院| 奇米影视在线99精品| 国产精品国产三级国产aⅴ中文 | 欧美日韩中文另类| 国模少妇一区二区三区| 洋洋av久久久久久久一区| 久久久久久免费网| 欧美日韩第一区日日骚| av在线不卡免费看| 免费成人小视频| 亚洲制服丝袜av| 国产精品乱码一区二区三区软件| 91精品国产综合久久福利软件 | 国产欧美日韩另类一区| 91精品中文字幕一区二区三区| 91在线无精精品入口|