DES加密算法代码定义.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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 字节)的

文档评论(0)

飞翔的燕子 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档