91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

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

資源簡介

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

資源截圖

代碼片段和文件信息

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

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

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

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

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

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

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

?

int?main()
{
int?i=0;?
char?MesHex[16]={0};?????????//?16個字符數組用于存放?64位16進制的密文
? char?MyKey[8]={0};???????????//?初始密鑰?8字節*8
char?YourKey[8]={0};?????????//?輸入的解密密鑰?8字節*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);???????????????//?設置密鑰?得到子密鑰Ki

PlayDes(MesHexMyMessage);???//?執行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);???????????????????????????????????????//?設置密鑰

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

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

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

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

/*-------------------------------
?字節轉換成位函數?
?每8次換一個字節?每次向右移一位
?和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


評論

共有 條評論

相關資源