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

Показать сообщение отдельно

Старожил


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

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


Цитата inco1:
Правда буквы заглавные, но это не критично. »
Вот такой вариант генератора позволяет задавать регистр
Код: Выделить весь код
!define GetRandomHexStringRL '!insertmacro GetRandomHexStringR x'
!define GetRandomHexStringRU '!insertmacro GetRandomHexStringR X'

!macro GetRandomHexStringR CASE OUTPUT LENGTH
	Push ${LENGTH}
	Push ${CASE}
	${CallArtificialFunction} GetRandomHexStringR_
	Pop ${OUTPUT}
!macroend

!macro GetRandomHexStringR_
	Exch $0 ; 'x'/'X'
	Exch
	Exch $1 ; length
	Push $2 ; 
	Push $3 ; 
	Push $4 ; 
	Push $5 ; 
	Push $R0 ; CSP handle returned by CryptAcquireContext()
	Push $R1 ; buffer address for data generated by CryptGenRandom()
	
	System::Alloc 32
	Pop $R1
	
	System::Call "advapi32::CryptAcquireContext(*i.R0, i0, i0, i1, i0x40)"
	System::Call "advapi32::CryptGenRandom(iR0, i32, iR1)"
	System::Call "advapi32::CryptReleaseContext(iR0, i0)"
	
	System::Call "*$R1(&i4.r2, &i4.r3, &i4.r4, &i4.r5)"
	System::Free $R0
	
	StrCpy $R0 "%08$0"
	IntFmt $2 $R0 $2
	IntFmt $3 $R0 $3
	IntFmt $4 $R0 $4
	IntFmt $5 $R0 $5
	
	StrCpy $0 $2$3$4$5 $1
	
	Pop $R1
	Pop $R0
	Pop $5
	Pop $4
	Pop $3
	Pop $2
	Pop $1
	Exch $0
!macroend
Пример:
Код: Выделить весь код
${GetRandomHexStringRL} $0 32 ; lowercase
${GetRandomHexStringRU} $0 32 ; uppercase
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:20, 13-06-2020 | #2446