LINUX.ORG.RU

Каз зашифровать произвольный набор чисел в одно число?

 


0

1

Я в шифровании 0. Нужен максимально простой метод. Тут даже не суть в шифровании, а задача получить одно число, чтоб потом его можно было преобразовать обратно в набор чисел

Рузультат может быть число как в двоичной системе так и в десятичной, это не принципиально. Входящий набор в десятичной. Только это число должно поместится в url

Промежуточные вставки чисел не оч подходят, так как существует большая вероятность совпадения, и парсинг по регулярке может выдать неверный результат

★★

Последнее исправление: webmak (всего исправлений: 4)

Можно пронумеровать пары, тройки и вообще, конечные наборы чисел методом типа канторовской диагонализации.

Deleted
()
Ответ на: комментарий от NeXTSTEP

а теперь представь набор 90 91 и что тогда? а количество этих наборов неизвестная величина, я написал выше, что вставка последовательносте, может привести к ошибке при расшифровке

нужно минимизировать вероятность ошибки, впринцыпе можно вставить большое число, но тогда упираемся в длину url

webmak ★★
() автор топика
Последнее исправление: webmak (всего исправлений: 2)

Самое простое: фиксированная длина + конкатенация.

UINT16_MAX = 0xFFFFFFFFFFFFFFFF — 16 символов.

И склеивать и снова разбирать просто.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от webmak

Тут тот же принцип, что и у экранирования \\. Откуда тут ошибки?

$  echo "99 999 999 1234" | sed -e 's/9/90/g' -e 's/ /91/g'
90909190909091909090911234
$  echo 90909190909091909090911234 | sed -e 's/91/ /g' -e 's/90/9/g'
99 999 999 1234
NeXTSTEP ★★
()

Не понял. В ЭВМ все есть число (набор 0 и 1Ж).
Переведи просто в восмеричную систему.

arson ★★★★★
()
Ответ на: комментарий от NeXTSTEP

Коретнее привести тайко пример, ато ТС не сообразит:

$ echo "91 9091909191 1234" | sed -e 's/9/90/g' -e 's/ /91/g'    
90191900901900901901911234

$ echo 90191900901900901901911234 | sed -e 's/91/ /g' -e 's/90/9/g'
91 9091909191 1234

Noob_Linux ★★★★
()

onenssl enc -aes-256-cbc

anonymous
()

1: ЯННП при чем тут шифрование?

2: на каком языке сие нужно?

3: Возможно числа переменной длины (или как они там по-русски), вывернутые потом в HEX, будут выходом.

anonymous
()
Ответ на: комментарий от NeXTSTEP

)) 100% да не сообразил)) сорри))) спасибо)

webmak ★★
() автор топика

считать что число, это номер сообщения в тентуре^W в некотором континууме...

в простейшем случае - битовый вектор, при необходимости усложнения , плавно переходящий например на указатели корней многочлена этого же вектора...кривых N-порядка...или просто битовый вектор как ключ

- то-же ни разу не криптограф...

anonymous
()
Ответ на: комментарий от anonymous

шифрование не причем особо, тега другого не подобрал, ну и возможно неправильно сформулировал суть, прошу простить

webmak ★★
() автор топика

Это к шифрованию не относится, это задача передачи данных. Есть бит-стаффиг и байт-стафиинг. Погуглите, там всё просто. Вам уже начали объяснять. Пробел меняем на 90, девятку на 91, следовательно, для передачи числа 9091 даём такую последовательность:

90910911

обратная расшифровка простая. Видим 90 — значит начало пакета, 91 — значит 9, все остальные цифры проходят как приняли.

и парсинг по регулярке может выдать неверный результат

Какой ещё парсинг по регулярке? Он то тут каким боком? Набор чисел преобразовали в url, передали, на той стороне преобразовали url в набор чисел и делайте что хотите. А парсить url регуляркой зачем?

Относительно «это число должно поместится в url». Данное требование не имеет смысла, пока не известно сколько числе исходно и сколько у них разрядов.

mky ★★★★★
()
Ответ на: комментарий от webmak

Сожми

#echo "09455 275793 27569 ... 146 8900823 16587" |wc -c
1044
#echo "09455 275793 27569 ... 146 8900823 16587" | xz -F raw -f | wc -c
559
559*8/3 = 1491 символов
Ну немного длиннее.

arson ★★★★★
()
Ответ на: комментарий от anonymous

нет, тут число нужно, для дальнейшей обработки, чтоб весь код не переписывать, как на фронте так и на беке.

webmak ★★
() автор топика
Последнее исправление: webmak (всего исправлений: 1)

Нужно сжать или зашифровать? Это принципиально разные вещи. Первое можно сделать как угодно, начиная от использования готовых утилит и заканчивая просто написанием программы реализующей какой-то простой алгоритм сжатия. Второе немного сложнее, но тоже реализуемо похожим образом.

а задача получить одно число, чтоб потом его можно было преобразовать обратно в набор чисел

Ну тогда твоя задача сводиться к тому, чтобы взять любое понравившееся трансцендентное число, например, е или пи. И дальше в твое то самое число записать в целую часть начало промежутка, а в дробную — конец, в который попадает твоя сжатая информация.

nikolnik ★★★
()
Ответ на: комментарий от webmak

да, но тогда оно не влезит в урл, вопрос длины урл

А что у тебя там за число такое, что в урл не влазит?

risenshnobel ★★★
()
Ответ на: комментарий от webmak

нет, тут число нужно, для дальнейшей обработки, чтоб весь код не переписывать, как на фронте так и на беке.

А если суммарное число будет слишком большое и не влезет в JavaScript number? Отправляй строчку «num1-num2-num3» и не выпендривайся.

vladimir-vg ★★
()

Представь число строкой. Перемешай порядок следования символов по какой-либо схеме, в самом простом варианте — переверни (1234 -> 4321).

deep-purple ★★★★★
()

NeXTSTEP

уже дал необходимое мне решение! спасибо ему еще раз. Тему отметил как решенную

webmak ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.