我想在程序中混淆字符串。目前,我只有一個簡單的字符串反轉工作。我希望能夠對數據執行異或擾碼以使其更加安全,但我嘗試的方法無法正常工作。XOR如何在C中加擾字符串,並使用相同的函數再次加密?
使用相同的函數和輸入類型來解碼字符串。這對字符串反轉沒有任何問題,因爲它只是反轉回來,但這可以通過XOR輕鬆完成,而不會太複雜?我寧願如果進程只保留一個字符串,就像逆轉一樣。這是我的逆轉功能。
void reverse_string(unsigned char *buf, int length)
{
int i;
unsigned char temp;
for (i = 0; i < length/2; i++)
{
temp = buf[i];
buf[i] = buf[length - i - 1];
buf[length - i - 1] = temp;
}
}
這裏是在XOR功能
void charxor(char * text, int len) {
const unsigned char enc[8]={173,135,131,121,110,119,187,143};
char ch;
int i;
int ind=0;
for (i=0;i<len;i++) {
ch=*text++;
if (ch)
*text = ch^enc[ind++];
ind %=8;
}
}
嘗試誰能幫助?將不勝感激!
您正在寫一個字節的XORed字符,這就是導致奇怪行爲的原因。此外,該空檢查會導致加密和解密不對稱。 – 2012-03-05 19:13:21
你如何通過解釋你當前的嘗試失敗來幫助我們。我的意思是,我可以自己解決問題,但是你真的應該在你的問題中包含這些細節。 – 2012-03-05 19:13:55