资源简介
DES算法通常用来加密整个文件,本程序是按行加密、解密文件,请注意。
已经过大量测试,没发现bug
代码片段和文件信息
#include
#include
#include “base64.h“
/*************************************************
Function: base64_to_ascii
Description: decodes string from base64 to ascii
Input: const char *in: the input string (NIL-terminated)
int inlen: length of input string
int maxlen: the output buffer size limit 0 to ignore
Output: unsigned char *out: decoded output string
Return: length of output string on successful
less than 0 on error occur then the output is invalid
Others:
*************************************************/
//int base64_decode(unsigned char *out const unsigned char *in int inlen int maxlen) {
int base64_decode(unsigned char *out unsigned char *in int inlen int maxlen) {
//~int inlen = strlen (in);
int outlen = 0;
int over = 0; // decode over flag
register char digit0 digit1 digit2 digit3;
unsigned char *out_org = out;
memset(out 0x00 maxlen);
// check if arguments valid
if (!out || !in) {
return INVALID_ARG;
}
// decode each four base64 characters
for (; inlen >= 4; inlen -= 4 in += 4) {
// update output length and check overflow
if (++outlen >= maxlen && maxlen) {
*out_org = ‘\0‘;
return OUTPUT_OVERFLOW;
}
if ((digit0 = DECODE64(in[0])) == BAD) {
*out_org = ‘\0‘;
return WRONG_FORMAT;
}
if ((digit1 = DECODE64(in[1])) == BAD) {
*out_org = ‘\0‘;
return WRONG_FORMAT;
}
*out++ = ((digit0 << 2) & 0xFC) | ((digit1 >> 4) & 0x03);
if (in[2] != ‘=‘) {
// update output length and check overflow
if (++outlen >= maxlen && maxlen) {
*out_org = ‘\0‘;
return OUTPUT_OVERFLOW;
}
if ((digit2 = DECODE64(in[2])) == BAD) {
*out_org = ‘\0‘;
return WRONG_FORMAT;
}
*out++ = ((digit1 << 4) & 0xF0) | ((digit2 >> 2) & 0x0F);
if (in[3] != ‘=‘) {
// update output length and check overflow
if (++outlen >= maxlen && maxlen) {
*out_org = ‘\0‘;
return OUTPUT_OVERFLOW;
}
if ((digit3 = DECODE64(in[3])) == BAD) {
*out_org = ‘\0‘;
return WRONG_FORMAT;
}
*out++ = ((digit2 << 6) & 0xC0) | (digit3 & 0x3F);
} else {
over = 1;
break;
}
} else {
over = 1;
break;
}
}
// there cannt have tail-fragment except after ‘=‘
if (!over && inlen > 0) {
*out_org = ‘\0‘;
return WRONG_FORMAT;
}
// terminate the output string
*out = ‘\0‘;
return outlen;
}
/************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 50176 2017-08-12 19:16 EncryptFile\EncryptFile\Debug\EncryptFile.exe
文件 371024 2017-08-12 19:16 EncryptFile\EncryptFile\Debug\EncryptFile.ilk
文件 461824 2017-08-12 19:16 EncryptFile\EncryptFile\Debug\EncryptFile.pdb
文件 5746 2017-06-28 10:26 EncryptFile\EncryptFile\EncryptFile\ba
文件 2376 2017-06-28 10:26 EncryptFile\EncryptFile\EncryptFile\ba
文件 8064 2017-08-11 20:15 EncryptFile\EncryptFile\EncryptFile\Debug\ba
文件 7964 2017-07-18 14:57 EncryptFile\EncryptFile\EncryptFile\Debug\BuildLog.htm
文件 2142 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\cl.command.1.tlog
文件 5542 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\CL.read.1.tlog
文件 2216 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\CL.write.1.tlog
文件 41022 2017-08-11 21:35 EncryptFile\EncryptFile\EncryptFile\Debug\DES.obj
文件 3701 2017-08-11 20:15 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.Build.CppClean.log
文件 406 2017-08-11 20:15 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.exe.em
文件 472 2017-08-11 20:15 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.exe.em
文件 381 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.exe.intermediate.manifest
文件 119 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.lastbuildstate
文件 3338 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.log
文件 707 2017-08-11 21:21 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.vcxprojResolveAssemblyReference.cache
文件 0 2017-08-11 20:15 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.write.1.tlog
文件 212 2017-08-11 20:15 EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile_manifest.rc
文件 2 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\li
文件 2 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\li
文件 2140 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\li
文件 3814 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\li
文件 1392 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\li
文件 13772 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\main.obj
文件 458 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\mt.command.1.tlog
文件 65 2017-07-18 14:57 EncryptFile\EncryptFile\EncryptFile\Debug\mt.dep
文件 434 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\mt.read.1.tlog
文件 434 2017-08-12 19:16 EncryptFile\EncryptFile\EncryptFile\Debug\mt.write.1.tlog
............此处省略36个文件信息
- 上一篇:vc++编写的聊天程序
- 下一篇:C++实现数据结构算法
相关资源
- aes加解密(vc源程序)
- 基于空调项目的Autosar 架构的设计.d
- VC++实现RSA加密算法
- C++实现RSA加密解密算法
- 多表代换 加密解密 C语言实现
- 椭圆曲线ECC加密解密算法的c语言实现
- hill密码的加密、解密以及破译.zip
- c++实现ECC加解密
- C语言实现凯撒和维吉尼亚加解密
- C++实现AES、DES加密算法含MFC界面
- 3DES加密算法C++实现
- DES/3DES算法C语言实现
- DES和3DES加密算法,C语言,适用于单片
- 各种加密算法C语言版
- The Design And Evolution Of C++英文版
- DES算法C++实现.rar
- Practical C++ Design From Programming to Archi
- DES文件加密解密系统 密码学课设
- c语言+UDP+DES加密+socket编程
- MFC写的对文件内容的DES加解密
- stm32L系列F系列 加密库Cryptographic lib
- C++编写的数据加密程序源代码6个
- MFC实现RSA算法
- 密码学:分组密码DES算法C语言版
- vc++实现des加密和解密
- MFC实现AES非对称加密解密算法
- 3DES加密算法 C++实现
- AES加解密算法实现MFC
- Design Patterns in Modern C++-Apress(2018)
- keil C51 v6.12完全解密版
评论
共有 条评论