Зашифруйте печатаемый текст, чтобы результат все еще был доступен для печати (может быть набран)
Я хочу зашифровать некоторую информацию для системы лицензирования, и я хочу, чтобы результат мог быть введен пользователем.
Update: Эта операция должна быть обратимой (расшифровываемой) Например., Encrypt ( ComputerID+ProductID) - > (любой стандартный символ ASCII, который можно ввести. В идеале, может быть, даже просто A-Z).
До сих пор я преобразовывал зашифрованный текст в шестнадцатеричный (так что это любой символ из 0-F), но это удваивает количество символов.
Я использую VB6.
Я думаю, что я бы сделал некоторую операцию над каждой парой (Input$(x) и Key$(x)), а затем сделал мод, чтобы держать его в диапазоне значений ascii (возможно, 0-9-A-Z)
Есть предложения по хорошему алгоритму?
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 с помощью ключа снова получить исходные идентификаторы.
Если вы не заботитесь о реверсировании операций, то подойдет любая свертка ключа и идентификатора. КСОР-самый простой из них.