-2

所以我需要对给出的任何输入进行编码。就像用户类型:“ABC”它应该转换为“JKL”我知道我们可以通过为每个单词定义一个字符来做到这一点。像 A = J , B = K 但问题是它每次都会提出相同的编码。那么有没有办法随机转发字符?并且如果可以记录随机数以便可以解码字符串有人知道方法吗?我会很感激的。

编辑1:它基本上是我的项目,使用位移加密任何给定文件,然后添加虚拟数据,然后通过矢量量化对其进行压缩。

所以我的第一步是读写一个已经完成的文件。现在我想将字符向前移动,我可以通过将它们转换为二进制然后使用位移来实现,或者我可以向前移动字符。但我想知道是否有任何方法可以捕获该随机生成的数字,因此在解码时我可以使用该数字正确解密字符。

我已经大致制作了一个代码..我会尽快更新它。感谢您的反馈

4

1 回答 1

1

您可以播种一个随机生成器,这将使它每次返回相同的随机数序列。这样您就可以使用密钥进行加密:

int key = 42;
Random rnd = new Random(key);

现在您可以使用随机数转换每个字符。例如对于字符范围 AZ:

char c = 'X';

int code = c - 'A'; // Bring the character code into the range 0-25
code = code + rnd.Next(26); // encrypt
code = code % 26; // roll over for codes > 25
c = (char)('A' + code); // convert code to character

除了减去随机数之外,解密将是相同的。

于 2013-04-03T15:27:31.523 回答