1

我有一个带有加密文本的文本文件。例如:

✹➂鳄✅ⵘ械뱥间뒝赡ꤦ掁☞ೇ</p>

쎠ԠƳᒸ略ⱉ㾤歓ر㗋鲔\ud953

现在我想解密这些。代码如下所示:

var lines = File.ReadLines("input.txt");   
List<string> DecList = new List<string>();
foreach(var line in toDecList)
{
    string decrypted = Decrypt(@line);
    DecList.Add(decrypted);             
}

File.WriteAllLines("output.txt", toEncList);

对于第一个示例,我没有收到任何错误。第二个我得到了一个加密异常。如果我将文件中的文本复制到剪贴板并将其直接粘贴到代码中,则不会出错。

所以我认为编码有问题。我也试过了

var lines = File.ReadLines("input.txt", Encoding.Unicode);  

但同样的问题也会发生。

有人有想法吗?

4

1 回答 1

0

您需要非常确保将文本与字节分开。文本始终是某些字母表或其他字母表中某些可读文本的表示。加密文本是字节流。将两者混合会导致问题。例如,UTF-8 文本可能不包含某些字节组合,而这些字节可能出现在字节流中。

您的代码似乎将编码字节视为字符串。这是一个基本错误,会导致问题。如果要将加密字节存储为文本,则需要将字节转换为文本格式(例如 Base64)进行存储。然后,您需要在解密之前将 Base64 文本转换回字节。

就像是:

encryptedBytes <- encrypt(plaintext, password)
storableString <- base64(encryptedBytes)
DB.store(storableString)

其次是:

b64Cyphertext <- DB.retrieve()
cypherbytes <- 46esab(b64Cyphertext)
decryptedText <- decrypt(cypherbytes, password)
于 2013-10-29T14:16:37.277 回答