xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 5KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-09
  • 語言: C/C++
  • 標簽: DES源代碼??

資源簡介

用C語言實現(xiàn)DES(數(shù)據(jù)加密算法)的一個例子,密文和密鑰都是8個字符。

資源截圖

代碼片段和文件信息

/*-------------------------------------------------------
??????Data?Encryption?Standard??56位密鑰加密64位數(shù)據(jù)?
??2011.10
--------------------------------------------------------*/
#include?
#include?
#include?“bool.h“???//?位處理?
#include?“tables.h“

void?BitsCopy(bool?*DatOutbool?*DatInint?Len);??//?數(shù)組復制?

void?ByteToBit(bool?*DatOutchar?*DatInint?Num);?//?字節(jié)到位?
void?BitToByte(char?*DatOutbool?*DatInint?Num);?//?位到字節(jié)

void?BitToHex(char?*DatOutbool?*DatInint?Num);??//?二進制到十六進制?64位?to?4*16字符
void?HexToBit(bool?*DatOutchar?*DatInint?Num);??//?十六進制到二進制?

void?TablePermute(bool?*DatOutbool?*DatInconst?char?*Tableint?Num);?//?位表置換函數(shù)?
void?LoopMove(bool?*DatInint?Lenint?Num);?????//?循環(huán)左移?Len長度?Num移動位數(shù)?
void?Xor(bool?*DatAbool?*DatBint?Num);?????????//?異或函數(shù)?

void?S_Change(bool?DatOut[32]bool?DatIn[48]);???//?S盒變換?
void?F_Change(bool?DatIn[32]bool?DatKi[48]);????//?F函數(shù)??????????????????????????????????

void?SetKey(char?KeyIn[8]);?????????????????????????//?設(shè)置密鑰
void?PlayDes(char?MesOut[8]char?MesIn[8]);???????//?執(zhí)行DES加密
void?KickDes(char?MesOut[8]char?MesIn[8]);?????????????//?執(zhí)行DES解密?

?

int?main()
{
int?i=0;?
char?MesHex[16]={0};?????????//?16個字符數(shù)組用于存放?64位16進制的密文
? char?MyKey[8]={0};???????????//?初始密鑰?8字節(jié)*8
char?YourKey[8]={0};?????????//?輸入的解密密鑰?8字節(jié)*8
char?MyMessage[8]={0};???????//?初始明文?

/*-----------------------------------------------*/

printf(“Welcome!?Please?input?your?Message(64?bit):\n“);
gets(MyMessage);????????????//?明文
printf(“Please?input?your?Secret?Key:\n“);
gets(MyKey);????????????????//?密鑰

while(MyKey[i]!=‘\0‘)????????//?計算密鑰長度
{
i++;
}

while(i!=8)??????????????????//?不是8?提示錯誤
{
printf(“Please?input?a?correct?Secret?Key!\n“);
gets(MyKey);
i=0;
while(MyKey[i]!=‘\0‘)????//?再次檢測
{
i++;
}
}

SetKey(MyKey);???????????????//?設(shè)置密鑰?得到子密鑰Ki

PlayDes(MesHexMyMessage);???//?執(zhí)行DES加密

printf(“Your?Message?is?Encrypted!:\n“);??//?信息已加密
for(i=0;i<16;i++)???????????
{
printf(“%c?“MesHex[i]);
}
printf(“\n“);
printf(“\n“);

printf(“Please?input?your?Secret?Key?to?Deciphering:\n“);??//?請輸入密鑰以解密
gets(YourKey);?????????????????????????????????????????//?得到密鑰
SetKey(YourKey);???????????????????????????????????????//?設(shè)置密鑰

KickDes(MyMessageMesHex);?????????????????????//?解密輸出到MyMessage

printf(“Deciphering?Over?!!:\n“);?????????????????????//?解密結(jié)束
for(i=0;i<8;i++)
{
printf(“%c?“MyMessage[i]);
}
printf(“\n“);
system(“pause“);

/*------------------------------------------------*/
}

/*-------------------------------
?把DatIn開始的長度位Len位的二進制
?復制到DatOut后
--------------------------------*/
void?BitsCopy(bool?*DatOutbool?*DatInint?Len)?????//?數(shù)組復制?OK?
{
int?i=0;
for(i=0;i {
DatOut[i]=DatIn[i];
}
}

/*-------------------------------
?字節(jié)轉(zhuǎn)換成位函數(shù)?
?每8次換一個字節(jié)?每次向右移一位
?和1與取最后一位?共64位?
--------------------------------*/
void?ByteToBit(bool?*DatOutch

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????202??2012-09-07?11:24??Source\bool.h

?????文件???????8557??2012-09-07?11:24??Source\main.c

?????文件???????4458??2011-10-06?14:02??Source\tables.h

?????目錄??????????0??2018-04-30?18:48??Source

-----------?---------??----------?-----??----

????????????????13217????????????????????4


評論

共有 條評論

相關(guān)資源