将数字流分成较小的块以进行处理

时间:2014-11-17 18:00:47

标签: c#

请理解我将要呈现的问题是学术问题,因此在现实世界的应用程序中可能没有意义。

我有一个正常运行的示例程序。该程序将数据写入一个文件,其中每一行都是一个字节。这些行是这些字节的数字表示。此数字表示是字节的128位RSA加密的结果。

例如第一行:

  

96044789616462297850953361101470572607将(解密)翻译成60,而字节60当然是< ,这是正确的,因为这是一个xml doc。

现在,示例程序具有明显的优势,因为加密的源文件在所有正确的位置都有换行符。

我自己的追求是尝试从数字流中读取。因此,示例程序读取4行并处理每行:

96044789616462297850953361101470572607 == 60 == <
40994093243674456311017847789777907446  == 63 == ?
61444338813524296592539084778436332638  == 120 == x
169017452170450092162160631302176410189  == 109 == m
//Note how the fourth line is 39 not 38 digits

我会改为:

960447896164622978509533611014705726074099409324367445631101784778977790744661444338813524296592539084778436332638169017452170450092162160631302176410189......

现在我原本打算每隔38位分开一次:

lineSplitted = Enumerable.Range(0, (line.Length / 38)).Select(l => line.Substring(l * 38, 38)).ToArray();

但如上所述,它不是一个有保证的分隔符。所以我似乎必须在构建流时注入分隔符。例如像1971791这样的回文,我可以识别并在阅读时用于我的分裂。

这是解决从流中识别和拔出每个加密段以进行解密的问题的正确方法吗?


编辑:

所以从评论看来,分隔符是使用的方法。按照@usr建议避免使用数字分隔符我使用split |它当然是base64编码和解码就好了。

1 个答案:

答案 0 :(得分:3)

您是否愿意使用非数字分隔符?考虑使用Split('|')