Сжатие данных ASCII для соответствия API UTF-32? - PullRequest
0 голосов
/ 05 августа 2011

У меня есть API, который получает данные Unicode, но мне нужно только хранить в нем ASCII.Я бы хотел сжать и зашифровать (или зашифровать) строковые значения, которые будут сохранены в Юникоде.

Мое желание - либо сжать эти данные схемы, либо зашифровать их любопытными глазами.Я не думаю, что это можно сделать хорошо.

Учитывая, что я хочу ограничить свои исходные данные допустимым, пригодным для печати ASCII;Как я могу "сжать" это исходное строковое значение в значение, которое будет меньше, запутано или и то и другое?

Вот как я могу представить, как это работает (хотя у вас может быть лучший способ):

  1. Этот исходный код будет принимать данную строку в качестве входных данных
  2. Будет взято представление этой строки в байтах (UTF8, ASCII, вы решите)
  3. Происходит какое-то волшебство - (эточасть, в которой мне нужна ваша помощь)
  4. Полученные байты будут преобразованы в целые или длинные (без десятичных точек)
  5. Число будет преобразовано в соответствующий символ с помощью этой утилиты http://baseanythingconvert.codeplex.com/SourceControl/changeset/view/77855#1558651

(обратите внимание, что для применения ограничения будет использоваться утилита, заключающаяся в том, что «окончательное» имя Unicode не должно включать следующие символы «/», «\», «#», '?'или'% ')

Фон

В таблице Microsoft Azure есть API, который принимает данные Unicode для имен хранилищ или имен свойств.Это база данных без схемы (поэтому столбцы могут создаваться в произвольном порядке), поэтому схема хранится на строку .Недостатком является то, что эти данные схемы хранятся на диске несколько раз, а также передаются по проводам, с избыточностью, в виде большого двоичного объекта XML.

Кроме того, я работаю над утилитой, которая динамически шифрует / дешифрует данные таблицы Azure, , но схема не зашифрована.Я хотел бы как-то замаскировать или скрыть эту информацию заголовка.

1 Ответ

0 голосов
/ 05 августа 2011

Это всего лишь некоторые идеи.

Не является ли шаг 3 на самом деле простым (просто сжать и / или зашифровать данные в разные байты)? Для 7-битного ASCII вы также можете перед сжатием и / или шифрованием сохранить данные, упаковав биты таким образом, чтобы они помещались в меньшее количество байтов.

Если вы можете использовать UTF-32, UTF-8 и т. Д. На шаге 5, у вас будет доступ ко всем символам в Unicode Standard, вплоть до 0x10FFFD, за некоторыми исключениями; например, некоторые кодовые точки не являются символами в стандарте Unicode, например, 0xFFFF, а другие - недопустимыми символами, например, 0xD800.

...