- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c实现DES加密算法
#include stdlib.h
#include stdio.h
#include string.h
#define ENCRYPT 1
#define DECRYPT 0
static void printHex( char *cmd, int len );
static void printArray( const char *In, int len );
static void F_func(bool In[32], const bool Ki[48]); // f函数
static void S_func(bool Out[32], const bool In[48]); // S盒代替
static void Transform(bool *Out, bool *In, const char *Table, int len); // 变换
static void Xor(bool *InA, const bool *InB, int len); // 异或
static void RotateL(bool *In, int len, int loop); // 循环左移
static void ByteToBit(bool *Out, const char *In, int bits); // 字节组转换成位组
static void BitToByte(char *Out, const bool *In, int bits); // 位组转换成字节组
// 16位子密钥
static bool SubKey[16][48];
// 64位经过PC1转换为56位 (PC-1)
const static char PC1_Table[56] =
{
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
};
// 左移
const static char LOOP_Table[16] =
{
1, 1, 2, 2, 2, 2, 2, 2,
1, 2, 2, 2, 2, 2, 2, 1
};
// 排列选择 2 (PC-2)
const static char PC2_Table[48] =
{
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
};
// Ri_1(32位)经过变换E后膨胀为48位 (E) void F_func
static const char E_Table[48] =
{
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
};
// 8个4比特合并为32比特的排列 P
const static char P_Table[32] =
{
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
您可能关注的文档
最近下载
- 餐饮经营数据分析.pptx VIP
- 宠物用品行业全渠道布局与渠道协同效应分析报告——2025年视角.docx
- 2022年南京邮电大学公共课《马克思主义基本原理概论》期末试卷A(有答案).docx VIP
- AGV调度系统解决策划方案.doc VIP
- 2023年南京邮电大学公共课《马克思主义基本原理概论》期末试卷A(有答案).docx VIP
- 2023年南京邮电大学公共课《马克思主义基本原理概论》期末试卷B(有答案).docx VIP
- MSDS_美孚宝力达EM润滑脂.pdf VIP
- 2024年7月1日实施新版医疗器械委托方企业与产品资质核准管理制度.docx
- 木结构房屋建筑鉴定报告格式文本.pdf VIP
- GB30871-2022《危险化学品企业特殊作业安全规范》应用问答.pdf VIP
文档评论(0)