压缩ASCII数据以适应UTF-32 API?

时间:2011-08-04 20:13:59

标签: unicode azure compression azure-table-storage

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

我希望压缩这个架构数据,或者从窥探眼睛加密它。我认为两者都做得不好。

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

以下是我的想法,虽然你可能有更好的方法:

  1. 此源代码将使用给定的String作为输入
  2. 将采用该字符串的字节表示形式(UTF8,ASCII,您决定)
  3. 发生了一些奇迹 - (这是我需要你帮助的部分)
  4. 结果字节将转换为int或long(无小数点)
  5. 使用此实用程序将数字转换为相应的字符 http://baseanythingconvert.codeplex.com/SourceControl/changeset/view/77855#1558651
  6. (请注意,实用程序将用于强制执行约束,即“最终”Unicode名称不得包含以下字符'/','\','#','?'或'%')

    背景

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

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

1 个答案:

答案 0 :(得分:0)

这些只是一些想法。

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

如果您可以在步骤5中使用UTF-32,UTF-8等,则可以访问Unicode标准中的所有字符,最多为0x10FFFD,但有一些例外情况;例如,某些代码点在Unicode标准中是非字符的,例如0xFFFF,而其他代码点是无效字符,例如0xD800。