2011-09-18 34 views
0

我想從只有一個字符的file.txt中取一個字符,例如「C」,並使用它的ASCII值轉換另一個file2.txt並進行更改。例如如何使用某些東西的ASCII值

C'S值= 67

FILE2.TXT有:

Hello 
World 

我希望它改變每個字符,並把它轉化爲:

添加H公司的ASCII值以 「C」 ASCII值並將它除以二,這樣你就可以得到另一個ASCII值,它將成爲新文件中的新字符。

所以新文件將被打印爲「dlroW olleH」,併爲每個字符添加新的ASCII值,如加密。

我怎樣才能做到這一點,沒有任何花哨的命令。

我的關鍵問題,在這裏將是:

  1. 我如何可以採取的ASCII值和EM混合在一起
  2. 萬一有一個135.5其劃分時要始終較高的號碼(136)或下數字(134),因爲據我所知,沒有ASCII字符值爲67.75。
  3. 我該如何使新文件全部倒退?新文件應打印爲.txt文件。

這樣:

file.txt --> Key 
file1.txt -->file to be encrypted 
file3.txt encrypted file. 
+0

你提出的算法是不可逆的 - 你將無法準確地(準確地)解密'encrypted'文件。使用整數除法。所有的ASCII代碼(所有字符代碼)都是整數值,所以沒有代碼如135.5或67.75。 –

+0

爲什麼不使用經過驗證的算法,如AES? – IDWMaster

+0

那麼,你們告訴我什麼?該部門不可能運行? – XIIIX

回答

3

1)我怎樣才能把ASCII值和EM混合在一起

這就是所謂的一個transposition cipher,但是:

分(CHR 1 + chr2)/ 2是一個不可行的建議(不可逆轉,正如Jonathan L所說),因爲你會從chr2中丟掉最低位。 無論你如何舍入,考慮你的加密將26個值{'A','B','C',...'Z'}映射到13(或14)。這不是雙射,你失去了信息。

所以只是不要做師。

char transpose = whatever; 
int transpose_offset = transpose-'A'; 
char encrypt(char in, int transpose_offset) { 
    return ((in-'A') + transpose_offset) % 26 + 'A'; 
} 

(除以2等於右狗屎>> 1.取而代之的是你可以做一個圓形移保存的信息。但無論如何,這不會給你太多,這是微不足道的通過列表來打破轉置密碼。)

3.)我怎樣才能讓它新文件全部向後?

簡單。要麼通過sourcetext向後執行加密,並且在您去時將其寫出。或者加密前進,存儲結果並向後寫出。

0

除了二分之一以外,您可以將要加密的文件的字節與密鑰的字節進行異或處理,生成加密文件。然後你可以再次運行解密。

相關問題