c语言单表加密算法,C语言实现数据加密算法.doc

C语言实现数据加密算法

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

Data Encryption Standard 56位密钥加密64位数据

2011.10

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

#include

#include

#include "bool.h" // 位处理

#include "tables.h"

void BitsCopy(bool *DatOut,bool *DatIn,int Len); // 数组复制

void ByteToBit(bool *DatOut,char *DatIn,int Num); // 字节到位

void BitToByte(char *DatOut,bool *DatIn,int Num); // 位到字节

void BitToHex(char *DatOut,bool *DatIn,int Num); // 二进制到十六进制 64位 to 4*16字符

void HexToBit(bool *DatOut,char *DatIn,int Num); // 十六进制到二进制

void TablePermute(bool *DatOut,bool *DatIn,const char *Table,int Num); // 位表置换函数

void LoopMove(bool *DatIn,int Len,int Num); // 循环左移 Len长度 Num移动位数

void Xor(bool *DatA,bool *DatB,int 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(MesHex,MyMessage); // 执行DES加密

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值