|
用新版这个写法比我之前的方法效率高了一多半了
但要调用8000次HMAC函数,所以想要问一下有什么写法能加快调用,减少内存占用
CALL $--qd --16 --ret:&&ret Bcrypt.dll,*这个是预先加载dll可以加快调用是吗
HMAC函数如下
- _SUB HMAC
- ENVI &&passphrase=%~1
- ENVI &&salt=%~2
- ENVI &&keylen=%~3
- ENVI &&iterations=%~4
- ENVI &&digest=%~5
- ENVI$# &&passphrase=%&&passphrase%
- ENVI-addr &&passphrase_p;&&passphrase_size=&&passphrase
-
- ENVI$# &&salt=%&&salt%
- ENVI-addr &&salt_p;&&salt_size=&&salt
-
- ENVI$# &&hAlg=*%&ptrlen% 0
- ENVI$# &&hHash=*%&ptrlen% 0
- ENVI &&BCRYPT_ALG_HANDLE_HMAC_FLAG=0x00000008
- CALL $--qd --16 --ret:&&ret Bcrypt.dll,BCryptOpenAlgorithmProvider,*&&hAlg,$%&&digest%,#0,#%&&BCRYPT_ALG_HANDLE_HMAC_FLAG%
- ENVI?ptr &&hAlg=&&hAlg
- CALL $--qd --16 --ret:&&ret Bcrypt.dll,BCryptCreateHash,#%&&hAlg%,*&&hHash,#0,#0,#%&&passphrase_p%,#%&&passphrase_size%,#0
- SET?ptr &hHash=&hHash
- CALL $--qd --16 --ret:&&ret Bcrypt.dll,BCryptHashData,#%&&hHash%,#%&&salt_p%,#%&&salt_size%,#0
-
- SET$# &hashSize=*4 0
- SET$# &resultSize=*4 0
-
- SET$# &hashObjectSize=*4 0
- CALL $--qd --ret:&&ret Bcrypt.dll,BCryptGetProperty,#%&hAlg%,$ObjectLength,*&hashObjectSize,#4,*&resultSize,#0
-
- CALL $--qd --ret:&&ret Bcrypt.dll,BCryptGetProperty,#%&hAlg%,$HashDigestLength,*&hashSize,#4,*&resultSize,#0
-
- ENVI?int &&hashSize=&&hashSize
- ENVI$# &&hashValue=*%&&hashSize% 0
-
- CALL $--qd --ret:&&ret Bcrypt.dll,BCryptFinishHash,#%&&hHash%,*&&hashValue,#%&&hashSize%,#0
- CALL $--qd --ret:&&ret Bcrypt.dll,BCryptDestroyHash,#%&&hHash%
- CALL $--qd --ret:&&ret Bcrypt.dll,BCryptCloseAlgorithmProvider,#%&&hAlg%,#0
-
- GETF &&hashValue,0#*,&&hashValue
- ENVI-ret %6=%&hashValue%
-
- _END
复制代码
|
|