Зашифруйте печатный текст, чтобы результат можно было печатать (можно набирать) - PullRequest
3 голосов
/ 24 января 2010

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

Обновление: Эта операция должна быть обратимой (дешифровать) Например., Encrypt (ComputerID + ProductID) -> (любой стандартный символ ASCII, который можно набрать. В идеале, может быть, даже просто A-Z).

До сих пор я конвертировал зашифрованный текст в HEX (так что это любой символ от 0-F), но это удваивает количество символов.

Я использую VB6.

Я думаю, я бы поработал над каждой парой (Input $ (x) и Key $ (x)), а затем сделал бы MOD, чтобы сохранить его в диапазоне значений ascii (может быть 0-9 AZ)

Есть предложения по хорошему алгоритму?

Ответы [ 3 ]

5 голосов
/ 24 января 2010

Посмотрите на Base64 "шифрование".

Base 64 преобразует число в 64 различных символа ASCII, а в шестнадцатеричных стихах - всего 16 различных символов ASCII ... Делая Base64 более компактным и то, что вы ищете.

EDIT: Код для этого в VB6 доступен здесь: http://www.nonhostile.com/howto-encode-decode-base64-vb6.asp

Per Fuzzy Lollipop, ниже, Base32 выглядит как еще лучший вариант. Бонусные баллы, если вы можете найти пример , который .

РЕДАКТИРОВАТЬ: Я нашел пример Base32 для VB6 , хотя я еще не пробовал. -Clay

2 голосов
/ 24 января 2010

кодировать зашифрованные байты в HEX, или Base32 или Base64

0 голосов
/ 24 января 2010

Хотите ли вы, чтобы это было обратимо - чтобы восстановить идентификаторы из зашифрованного текста? Если это так, то имеет значение, как вы комбинируете строку ключа и ввода.

Обычно вы XOR каждой байтовой пары (работайте с байтовыми массивами, чтобы избежать проблем с Юникодом), циркулируя по ключевой строке, если она короче, чем ввод. Затем можно использовать кодировку Base N (32, 64 и т. Д.) Для генерации строки лицензии.

Обе операции являются обратимыми: вы можете восстановить строки XORed из строки Base N, затем снова XOR с помощью ключа, чтобы получить исходные идентификаторы.

Если вас не волнует изменение операций, подойдет любая свертка ключа и идентификатора. XOR - это самое простое.

...