资源简介

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\base64.c

     文件       2376  2017-06-28 10:26  EncryptFile\EncryptFile\EncryptFile\base64.h

     文件       8064  2017-08-11 20:15  EncryptFile\EncryptFile\EncryptFile\Debug\base64.obj

     文件       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.embed.manifest

     文件        472  2017-08-11 20:15  EncryptFile\EncryptFile\EncryptFile\Debug\EncryptFile.exe.embed.manifest.res

     文件        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\link-cvtres.read.1.tlog

     文件          2  2017-08-12 19:16  EncryptFile\EncryptFile\EncryptFile\Debug\link-cvtres.write.1.tlog

     文件       2140  2017-08-12 19:16  EncryptFile\EncryptFile\EncryptFile\Debug\link.command.1.tlog

     文件       3814  2017-08-12 19:16  EncryptFile\EncryptFile\EncryptFile\Debug\link.read.1.tlog

     文件       1392  2017-08-12 19:16  EncryptFile\EncryptFile\EncryptFile\Debug\link.write.1.tlog

     文件      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个文件信息

评论

共有 条评论