我想从file.txt中获取一个字符,该字符只有一个字符,例如“C”,并使用其ASCII值转换另一个file2.txt并更改它。例如
C的值= 67
file2.txt有:
Hello
World
我希望它能更改每个角色并将其转换为:
使用“C”ASCII值添加H的ASCII值并将其除以2,这样您就可以获得另一个ASCII值,这将是新文件的新字符。
所以新文件将被打印为“dlroW olleH”,每个字符都有新的ASCII值,如加密。
如果没有任何花哨的命令,我怎么能这样做。
我的关键问题是:
这样:
file.txt --> Key
file1.txt -->file to be encrypted
file3.txt encrypted file.
答案 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,而是生成加密文件。然后你可以再次运行它来解密。