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


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

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

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

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

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

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

3 3

3 ответа:

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

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

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

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

EDIT: я нашелпример Base32 для VB6 , хотя я еще не пробовал его. - Глина

Закодируйте зашифрованные байты в шестнадцатеричном коде, или Base32, или Base64

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

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

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

Если вы не заботитесь о реверсировании операций, то подойдет любая свертка ключа и идентификатора. КСОР-самый простой из них.