2015-12-25 61 views
1

我想創建一個簡單的加密算法,但是我現在還做不到。當我運行這個程序時,它在屏幕上打字C中的簡單加密函數

 
"Name: John Nash, Cryptioned Data: John Nash, Decryptioned Data: John Nash" 

我該如何解決這個問題?我在哪裏犯錯誤?

#include<stdio.h> 


char *ecrypt(char data[]); 
char *decrypt(char data[]); 

int i; // Global variable... 

void main(void) 
{ 
    char name[] = "John Nash",*data_encryptioned,*data_decryption; 
    data_encryptioned = ecrypt(name); 
    data_decryption = decrypt(data_encryptioned); 
    printf("Name: %s, Cryptioned Data: %s, Decryptioned Data: %s\n",name,data_encryptioned,data_decryption); 
} 

char *ecrypt(char data[]) 
{ 
    for(i=0;data[i]!='\0';i++) 
    { 
     data[i]+=i+12; 
    } 
    return &data[0]; 
} 

char *decrypt(char data[]) 
{ 
    for(i=0;data[i]!='\0';i++) 
    { 
     data[i]-=(i+12); 
    } 
    return &data[0]; 
} 
+0

所有3個指針都指向內存中的相同位置。試試malloc。 –

回答

3

您正在打印打印前已加密和解密的相同緩衝區。因此,要麼製作一個加密字符串的副本,要麼逐步打印它們以查看過程:

printf("%s\n", name); 
    data_encryptioned = ecrypt(name); 
    printf("Cryptioned Data: %s\n",data_encryptioned); 
    data_decryption = decrypt(data_encryptioned); 
    printf("Decryptioned Data: %s\n",data_decryption);