如何使用某些东西的ASCII值

时间:2011-09-18 23:21:27

标签: c file encryption ascii

我想从file.txt中获取一个字符,该字符只有一个字符,例如“C”,并使用其ASCII值转换另一个file2.txt并更改它。例如

C的值= 67

file2.txt有:

Hello
World

我希望它能更改每个角色并将其转换为:

使用“C”ASCII值添加H的ASCII值并将其除以2,这样您就可以获得另一个ASCII值,这将是新文件的新字符。

所以新文件将被打印为“dlroW olleH”,每个字符都有新的ASCII值,如加密。

如果没有任何花哨的命令,我怎么能这样做。

我的关键问题是:

  1. 如何获取ASCII值并将它们混合在一起
  2. 如果有一个135.5,当它的分割总是较高的数字(136)或较低的数字(134),因为据我所知,没有ASCII字符,其值为67.75。
  3. 我怎样才能使新文件全部倒退?新文件应打印为.txt文件。
  4. 这样:

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

2 个答案:

答案 0 :(得分:3)

1。)如何获取ASCII值并将em混合在一起

然而,这被称为transposition cipher

除以(chr1 + 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.。我怎样才能使新文件全部倒退?

易。要么加密通过源文本向后工作,要么随时写出来。或者加密前进,存储结果并向后写出。

答案 1 :(得分:0)

您可以使用密钥的字节对要加密的文件的字节进行xor而不是除以2,而是生成加密文件。然后你可以再次运行它来解密。