Зашифруйте печатный текст, чтобы результат можно было печатать (можно набирать)

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

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

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

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

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

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

3 ответа

Решение

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

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

РЕДАКТИРОВАТЬ: код для этого в VB6 доступен здесь: http://www.nonhostile.com/howto-encode-decode-base64-vb6.asp

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

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

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

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

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

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

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

Другие вопросы по тегам