【问题标题】:Compressing ASCII data to fit within a UTF-32 API?压缩 ASCII 数据以适应 UTF-32 API?
【发布时间】:2013-04-25 09:12:12
【问题描述】:

我有一个接收 Unicode 数据的 API,但我只需要在其中存储 ASCII。我想压缩和混淆(或加密)将以 Unicode 保存的字符串值。

我希望要么压缩此架构数据,要么对其进行加密以防窥探。我认为不可能两者都做好。

考虑到我想将我的源数据限制为有效的、可打印的 ASCII;如何将原始字符串值“压缩”为更小、更模糊或两者兼有的值?

这是我想象的工作方式(尽管您可能有更好的方法):

  1. 此源代码将给定字符串作为输入
  2. 将采用该字符串的字节表示(UTF8、ASCII,由您决定)
  3. 发生了一些奇迹 - (这是我需要你帮助的部分)
  4. 生成的字节将被转换为 int 或 long(无小数点)
  5. 使用此实用程序将数字转换为相应的字符 http://baseanythingconvert.codeplex.com/SourceControl/changeset/view/77855#1558651

(请注意,实用程序将用于强制执行约束是“最终”Unicode 名称不得包含以下字符 '/'、'\'、'#'、'?' 或 '%')

背景

Microsoft Azure Table 有一个 API,它接受 Unicode 数据作为存储或属性名称。这是一个无模式的数据库(因此可以临时创建列),因此模式存储每行。缺点是该模式数据多次存储在磁盘上,而且它也是通过网络传输的,非常冗余,在 XML blob 中。

此外,我正在开发一个 dynamically encrypts/decrypts Azure Table Data, 但架构未加密的实用程序。我想以某种方式掩盖或混淆此标头信息。

【问题讨论】:

    标签: unicode azure compression azure-table-storage


    【解决方案1】:

    这些只是一些想法。

    第 3 步实际上不是很简单(只需将数据压缩和/或加密成不同的字节)?对于 7 位 ASCII,您还可以在压缩和/或加密之前,通过打包位来存储数据,以便它们适合更少的字节。

    如果您可以在步骤 5 中使用 UTF-32、UTF-8 等,则您可以访问 Unicode 标准中的所有字符,最高可达 0x10FFFD,但有一些例外;例如,有些码位是 Unicode 标准中的非字符,如 0xFFFF,而另一些则是无效字符,如 0xD800。

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多