- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#ifndef _DES_ENCRYPT_DECRYPT
#define _DES_ENCRYPT_DECRYPT
#define BYTE unsigned char
#define LPBYTE BYTE*
#define LPCBYTE const BYTE*
#define BOOL int
class DES
{
public:
BOOL CDesEnter(LPCBYTE in, LPBYTE out, int datalen, const BYTE key[8], BOOL type);
BOOL CDesMac(LPCBYTE mac_data, LPBYTE mac_code, int datalen, const BYTE key[8]);
private:
void XOR(const BYTE in1[8], const BYTE in2[8], BYTE out[8]);
LPBYTE Bin2ASCII(const BYTE byte[64], BYTE bit[8]);
LPBYTE ASCII2Bin(const BYTE bit[8], BYTE byte[64]);
void GenSubKey(const BYTE oldkey[8], BYTE newkey[16][8]);
void endes(const BYTE m_bit[8], const BYTE k_bit[8], BYTE e_bit[8]);
void undes(const BYTE m_bit[8], const BYTE k_bit[8], BYTE e_bit[8]);
void SReplace(BYTE s_bit[8]);
};
/*
* CDesEnter 函数说明:
* des 加密 / 解密入口
* 返回:
* 1 则成功 ,0 失败
* 参数:
* in 需要加密或解密的数据
* 注意: in 缓冲区的大小必须和 datalen 相同 .
* out 加密后或解密后输出。
* 注意: out 缓冲区大小必须是 8 的倍数而且比 datalen 大或者相等。
* 如 datalen=7 ,out 缓冲区的大小应该是 8,datalen=8,out 缓冲区的大小应该是 8,
* datalen=9,out 缓冲区的大小应该是 16,依此类推。
* datalen 数据长度 ( 字节 ) 。
* 注意 :datalen 必须是 8 的倍数。
* key 8 个字节的加密或解密的密码。
* type 是对数据进行加密还是解密
* 0 表示加密 1 表示解密
*/
BOOL DES::CDesEnter(LPCBYTE in, LPBYTE out, int datalen, const BYTE key[8], BOOL type)
{
// 判断输入参数是否正确,失败的情况为:
//!in : in 指针(输入缓冲)无效
//!out : out 指针(输出缓冲)无效
//datalen1 : 数据长度不正确
//!key : 加/ 解密密码无效
//type ((datalen % 8) !=0 :选择解密方式但是输入密文不为 8 的倍数
if((!in) || (!out) || (datalen1) || (!key) || (type ((datalen % 8) !=0)))
return false;
if(type==0) // 选择的模式是加密
{
// 用于存储待加密字串最后的若干字节
// DES 算法是以 8 个字节为单位进行加密,如果待加密字串以 8 为单位分段加密时,最后一段不
足
//8 字节,则在后面补 0,使其最后一段的长度为 8 字节
// te8bit 是作为存储待加密字串最后一段(不足 8 字节)的
您可能关注的文档
最近下载
- 中华人民共和国通信行业标准通信用阀控式密封铅-中国通信标准化协会.PDF VIP
- 个人图书馆使用说明.doc VIP
- 7-1.广东省高级会计师职称评审结构化自评表.pdf VIP
- JCT 60006-2020 瓷砖薄贴法施工技术规程.pdf VIP
- 《6763个常用汉字使用频率表》.doc
- 化工有限公司公司生态环境监测数据质量管理制度.pdf VIP
- 四川省南充市2023-2024学年度初中语文八年级上学期期末质量抽查测试语文试卷及答案.doc VIP
- DB4101T11 食品生产企业6S现场管理规范.pdf VIP
- 2022年《国家电网有限公司高校毕业生招聘考试大纲(通信类专业2022版).pdf VIP
- 室分施工培训.pptx
原创力文档


文档评论(0)