2012年3月19日 星期一

[C/C++ 演算法]-純C++_字串XOR編解碼函數

[C/C++ 演算法]-C++_字串XOR編解碼函數



本篇要分享純C++_字串XOR編解碼函數應用,有興趣的(C/P)同好,歡迎來(C/P)一下哈哈 ^ ^












程式碼



#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char gchrxor[]="jashliao blog at the pixnet.net";

int intEncoder[1000]={-1};

int intDecoder[1000]={-1};

char chrDecoder[1000];

int XorEncoder(char *chrS)

{

    int i,j;

    int intlenxor=0;

    int intlenS=0;

    intlenxor=strlen(gchrxor);

    intlenS=strlen(chrS);

    char chrinput=0;

    char chrxor=0;

    j=0;

    for(i=0;i<intlenS;i++)

    {

        chrinput=*(chrS+i);

        if(j<intlenxor)

        {

            chrxor=*(gchrxor+j);

            j++;

        }

        else

        {

            j=0;

            chrxor=*(gchrxor+j);

        }

        intEncoder[i]=chrinput^chrxor;

    }

    return intlenS;

}

void XorDecoder(int len)

{

    int i,j;

    int intlenxor=0;

    int intlenS=len;

    intlenxor=strlen(gchrxor);

    char chrinput=0;

    char chrxor=0;

    j=0;

    for(i=0;i<intlenS;i++)

    {

        chrinput=intDecoder[i];

        if(j<intlenxor)

        {

            chrxor=*(gchrxor+j);

            j++;

        }

        else

        {

            j=0;

            chrxor=*(gchrxor+j);

        }

        chrDecoder[i]=chrinput^chrxor;

    }

}

void main()

{

    char chrtest[]="http://www.google.com";

    int i=0;

    int intlenS=0;

    int data=-1;

    int j;

    intlenS=XorEncoder(chrtest);

    printf("in=%d\n",intlenS);

    FILE *pf='\0';

    pf=fopen("url.txt","w");

    for(i=0;i<intlenS;i++)

    {

        fprintf(pf,"%d,",intEncoder[i]);

        printf("%d,",intEncoder[i]);

    }

    fclose(pf);

    printf("\n");

    pf='\0';

    pf=fopen("url.txt","r");

    j=0;

    while(fscanf(pf,"%d,",&data)!=EOF)

    {

        printf("%d,",data);

        intDecoder[j]=data;

        j++;

    }

    fclose(pf);

    printf("\n");

    XorDecoder(j);

    printf("%s\n",chrDecoder);

    system("pause");

}

 



 


沒有留言:

張貼留言