Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: генератор ключей
Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата lohi1234567:
хотелось бы без применения сторонних утилит(если это возможно) »
Хорошую хэш-функцию на CMD реализовать проблематично, для этого лучше использовать специализированные утилиты - надежней и быстрее. В качестве простого примера приведу вариант кодирования строки по алгоритму ROT13, после чего строка делится на несколько подстрок (в зависимости от требуемой длины ключа) и в каждой такой подстроке выполняется слияние всех символов простым XOR.
читать дальше »
Код: Выделить весь код
@echo off
Set "STR1=TEST_0123_test_4567"
Set "STR2=test_0123_TEST_4567"

Call:EncodeString 4 STR1
Call:EncodeString 4 STR2

Pause>Nul
EXIT

:EncodeString   %KeyLength_By2%  %VarString%  [%VarKey%]
::------------------------------------------------------
 SetLocal EnableDelayedExpansion
(For /L %%i In (32,1,126) Do (Set/A "$n=%%i+13-(%%i-32)/82*95"
  %COMSPEC% /C "Exit !$n!"& Set "$n=!=ExitCode:~-2!"
  %COMSPEC% /C "Exit %%i" & Set "$_!=ExitCodeASCII!=!$n!")
 Set "tmp=!%~2!!%~2!FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100"
 Set/A "LN=0x!tmp:~510,2!,IN=LN/%~1+1"& Set "NEWSTR="
 For /L %%m In (1,1,%~1) Do (Set/A XOR=0
  For /L %%n In (1,1,!IN!) Do (Set/A "LI=%%m-1+(%%n-1)*%~1"
    Call Set "CHR=%%%~2:~!LI!,1%%"& Set "ASC="
    If Defined CHR Call Set "ASC=0x%%$_!CHR!%%"
    Set/A "XOR=XOR^ASC")
  %COMSPEC% /C "Exit !XOR!"& Set "NEWSTR=!NEWSTR!!=ExitCode:~-2!")
)
 EndLocal& If "%~3"=="" (Echo:%NEWSTR%) Else Set "%~3=%NEWSTR%"
GoTo:EOF

особенности метода:
- в строке не должно быть русских букв (только ASCII);
- регистр не учитывается (видно из примера);
- длина строки не должна превышать 255 символов.

P.S. вариант на VBS: VBS/WSH/JS - Вычисление хэша MD5 строки
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:28, 05-06-2011 | #5

Название темы: генератор ключей