将数字流分解为较小的块进行处理

本文关键字:处理 数字 分解 | 更新日期: 2023-09-27 18:30:53

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

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

例如第一行:

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

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

我自我造成的追求是尝试从数字流中读取。因此,示例程序读取 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建议避免使用数字分隔符,我使用拆分 |当然,它 base64 编码和解码都很好。

将数字流分解为较小的块进行处理

你愿意使用非数字分隔符吗?考虑使用 Split('|') .