【问题标题】:Simple string encryptation - safety of higher ascii characters简单字符串加密 - 高级 ascii 字符的安全性
【发布时间】:2017-11-20 21:58:06
【问题描述】:

我正在尝试为字符串创建一个简单的加密方案。字符串的每个字符都被赋予另一个 ascii 值。

它需要将最多 246 个 ascii 字符写入磁盘上的一个简单文件。

我想知道将这些特殊字符写入磁盘是否安全,或者是否会导致不良结果。感谢您的帮助。

编辑:我正在考虑类似于以下的算法:

* Convert each character of string to its integer number (hence 110 for 'n' and 122 for 'z')
* Double that number (get 220 and 244)
* Convert this to character (will get extended ascii codes)
* Save these characters to file. 

使用通常的文本文件写入功能将这些extended ascii characters 保存到磁盘文件是否安全?

【问题讨论】:

  • "ascii characters up to 246"是什么意思?
  • 请注意,我们处于后 ASCII 世界,这不仅仅意味着其他语言,想想表情符号。
  • @JamesKPolk 和@Zaph:请参阅上面我的问题中的编辑。

标签: encryption ascii disk


【解决方案1】:

只有一组有限的 ASCII 字符。有 95 个可打印字符,例如“A”,还有空格字符。有 33 个可打印字符,例如换行、回车、NUL 和 DELETE。所以你不能使用 246 个 ASCII 字符,因为总共只有 128 个可用。 ASCII 严格来说是 7 位,给你 2^7 = 128 个可能的值。

即使您使用 ISO 8859 拉丁字符集或 Windows-1252 字符集,您仍然需要处理不可打印的控制字符,剩下 256 - 33 - 5 个字符或 218 个字符。 Windows-1252 仍有 5 个未定义字符。

您可以做的当然是将数据保存为字节。每个字节有 256 个可能的值(通常是 0 到 255 或 -128 到 127)。只要您将文件作为二进制文件打开,就没有问题。


当然,您可以在文件中存储任意数量的字符,最高可达文件系统或操作系统的限制。所以我想你没有问那个

【讨论】:

  • 我看不出有什么理由改变我的答案。读/写加密字节,解密成字符并显示这些。这样你就不需要深入了解字符集的所有细节,这比破解你的加密代码更难理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2012-10-29
  • 2017-10-08
相关资源
最近更新 更多