【发布时间】:2014-11-18 03:30:13
【问题描述】:
请理解我要提出的问题是学术问题,因此在现实世界的应用程序中可能没有意义。
我有一个可以正常运行的示例程序。该程序将数据写入文件,其中每一行都是一个字节。这些行是这些字节的数字表示。此数字表示是 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 这样的回文,我可以在阅读时识别并用于拆分。
这是解决这个问题的正确方法吗?识别并从流中提取每个加密段以进行解密?
编辑:
因此,从 cmets 看来,分隔符是使用的方法。按照@usr 的建议避免使用数字分隔符,我使用了 split |当然 base64 编码和解码都很好。
【问题讨论】:
-
所以;您正在使用行分隔文件并构建辅助文件;要读取的非行分隔流?您是否考虑将行分隔文件解析为集合并从中读取?
-
好吧,如果我留在本地,那可以工作。但我的沙盒场景是生成一个流发送到其他地方,并且接收者能够处理它。
-
您愿意使用非数字分隔符吗?回文现在不能保证自然地出现在流中。在我看来,没有数字序列是安全的分隔符。
-
为什么不分块发送(即一次一到两个字节)。那你就不需要“流”了吗?
-
那么
Split('|')对你有用吗?这太容易了,可能是作弊。
标签: c#