2011-09-18 36 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

除了二分之一以外,您可以将要加密的文件的字节与密钥的字节进行异或处理,生成加密文件。然后你可以再次运行解密。

相关问题