2014-12-03 20 views
0

我有我工作的一個項目,我現在有工作,進入了我的名字>然後將其轉換爲十六進制>進行加密>解密它>然後打印。問題是我需要用二進制代碼來強制我的名字,而不是當前的工作方式。我不知道如何轉換它。C++如何硬編碼名稱爲二進制

這裏是代碼片段。 如果我輸錯了代碼,我很抱歉。第一次發佈。

CfinalprAES ofinalprAES; 
ofinalprAES.MakeKey("abcdefghabcdefgh", "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, 16); 
char szDataIn[80]; 

printf("Enter your Name: "); 
scanf("%79s", szDataIn); 

char szDataOut[17] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; 
ofinalprAES.EncryptBlock(szDataIn, szDataOut); 
CharStr2HexStr((unsigned char*)szDataIn, szHex, 16); 
printf("Hex of input: "); 
cout << szHex << endl; 
CharStr2HexStr((unsigned char*)szDataOut, szHex, 16); 
printf("Encrypted: "); 
cout << szHex << endl; 
memset(szDataIn, 0, 16); 
ofinalprAES.DecryptBlock(szDataOut, szDataIn); 
CharStr2HexStr((unsigned char*)szDataIn, szHex, 16); 
printf("Decrypted: "); 
std::stringstream ss; 
ss << szHex << endl; 
printf("Hex to String: "); 
cout << ss.str(); 
+5

怎麼辦你的意思是「硬代碼」和「二進制」? – 2014-12-03 17:03:46

+1

你可以簡單地使用'char szDataIn [] =「Chris Bertsch」;'在你的二進制文件(可執行文件)中硬編碼你的名字。那是你的追求? – 2014-12-03 17:17:35

+0

'char'和binary之間沒有區別。一個普通的字典:char - 每個字符都由一個符號表示,或者它的數字ASCII值(對於ASCII字符),並不是所有符號都可見。十六進制 - 當它包含2個十六進制數字時,由它表示的每個字符的值。通過轉換爲十六進制字符串,您還可以將二進制文件轉換爲文本文件 – SHR 2014-12-03 17:29:47

回答

0

簡單的硬編碼:

char szDataIn[80] = "Chris Bertsch"; 

如果你想的是多一點點模糊的,你可以用你的名字字符的十六進制表示:

char szDataIn[80] = "\x43\x68\x72\x69\x73\x20\x42\x65\x72\x74\x73\x63\x68"; 
+0

真正的硬編碼應該使其成爲「靜態const char」。請記住文字是隻讀的。 'const'也應該把它放到一個數組中。 – 2014-12-03 17:54:27

+0

@ThomasMatthews,'szDataIn'是一個數組。我不明白如何使用'static const'對硬編碼更好。 – 2014-12-03 17:59:23

+0

完美...謝謝! – 2014-12-03 18:44:27

相關問題