[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");
}
|