22 lines
750 B
Plaintext
22 lines
750 B
Plaintext
PRINT FNsha1("Rosetta Code")
|
|
END
|
|
|
|
DEF FNsha1(message$)
|
|
LOCAL buflen%, buffer%, hprov%, hhash%, hash$, i%
|
|
CALG_SHA1 = &8004
|
|
CRYPT_VERIFYCONTEXT = &F0000000
|
|
HP_HASHVAL = 2
|
|
PROV_RSA_FULL = 1
|
|
buflen% = 64
|
|
DIM buffer% LOCAL buflen%-1
|
|
SYS "CryptAcquireContext", ^hprov%, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT
|
|
SYS "CryptCreateHash", hprov%, CALG_SHA1, 0, 0, ^hhash%
|
|
SYS "CryptHashData", hhash%, message$, LEN(message$), 0
|
|
SYS "CryptGetHashParam", hhash%, HP_HASHVAL, buffer%, ^buflen%, 0
|
|
SYS "CryptDestroyHash", hhash%
|
|
SYS "CryptReleaseContext", hprov%
|
|
FOR i% = 0 TO buflen%-1
|
|
hash$ += RIGHT$("0" + STR$~buffer%?i%, 2)
|
|
NEXT
|
|
= hash$
|