• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C++ Failproof xor 加解密源代码

OC/C/C++ 水墨上仙 2219次浏览

C++ Failproof xor 加解密源代码

/* All of the XOR encryption algorithms I encountered on the web were faulty on
 * some keys/inputs using binary read & write both for files and chars is
 * crucial */
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define MAX 512 // max key length
 
void xorenc(char *inname, char *outname, char *key);
 
int main(int argc, char **argv)
{
    char input[MAX], *key;
 
    if(argc != 3) // check the arguments
    {
        printf("ERROR: invalid arguments\n\n");
        printf("Usage:\n");
        printf("%s [input] [output]\n", argv[0]);
        return EXIT_FAILURE;
    }
     
    /* get the key */
    printf("Key plz: ");
    fgets(input, MAX, stdin);
    key = malloc(strlen(input) + 1);
    strcpy(key, input);
     
    xorenc(argv[1], argv[2], key);
     
    free(key);
    return 0;
}
 
void xorenc(char *inname, char *outname, char *key)
{
    FILE *input, *output;
    char c[1];
    int i, k;
     
    input = fopen(inname, "rb");
    output = fopen(outname, "wb");
     
    k = strlen(key);
    i = 0;
    while((fread(c, 1, 1, input)) != 0)
    {
        c[0] ^= key[i++]; // xor the input file's char with key's char
        fwrite(c, 1, 1, output); // write the (en/de)crypted char to output
        if(i == k) i = 0; // rewind the key if input is longer than it
    }
     
    fclose(input);
    fclose(output);


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C++ Failproof xor 加解密源代码
喜欢 (0)
加载中……