[B2D / B3D] SHA-256 Checksum

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Buddah

Betreff: [B2D / B3D] SHA-256 Checksum

BeitragFr, Okt 14, 2005 3:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Portierung der BlitzMax Version aus dem Blitzbasic.com Code archive von TwoEyedPete

BlitzBasic: [AUSKLAPPEN]
Graphics 658,300,16,2
Dim SHA256_Dat(0)

txt$ = \"The quick brown fox jumps over the lazy dog\"
Print txt$
Print SHA256$(txt$)
Print \"d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 <- Should be this\"

WaitKey()
End


Function SHA256$(in$)
Local h0=$6A09E667,h1=$BB67AE85,h2=$3C6EF372,h3=$A54FF53A
Local h4=$510E527F,h5=$9B05688C,h6=$1F83D9AB,h7=$5BE0CD19
Local k[63],inlen=Len(in$)
k[ 0]=$428A2F98:k[ 1]=$71374491:k[ 2]=$B5C0FBCF:k[ 3]=$E9B5DBA5:k[ 4]=$3956C25B:k[ 5]=$59F111F1
k[ 6]=$923F82A4:k[ 7]=$AB1C5ED5:k[ 8]=$D807AA98:k[ 9]=$12835B01:k[10]=$243185BE:k[11]=$550C7DC3
k[12]=$72BE5D74:k[13]=$80DEB1FE:k[14]=$9BDC06A7:k[15]=$C19BF174:k[16]=$E49B69C1:k[17]=$EFBE4786
k[18]=$0FC19DC6:k[19]=$240CA1CC:k[20]=$2DE92C6F:k[21]=$4A7484AA:k[22]=$5CB0A9DC:k[23]=$76F988DA
k[24]=$983E5152:k[25]=$A831C66D:k[26]=$B00327C8:k[27]=$BF597FC7:k[28]=$C6E00BF3:k[29]=$D5A79147
k[30]=$06CA6351:k[31]=$14292967:k[32]=$27B70A85:k[33]=$2E1B2138:k[34]=$4D2C6DFC:k[35]=$53380D13
k[36]=$650A7354:k[37]=$766A0ABB:k[38]=$81C2C92E:k[39]=$92722C85:k[40]=$A2BFE8A1:k[41]=$A81A664B
k[42]=$C24B8B70:k[43]=$C76C51A3:k[44]=$D192E819:k[45]=$D6990624:k[46]=$F40E3585:k[47]=$106AA070
k[48]=$19A4C116:k[49]=$1E376C08:k[50]=$2748774C:k[51]=$34B0BCB5:k[52]=$391C0CB3:k[53]=$4ED8AA4A
k[54]=$5B9CCA4F:k[55]=$682E6FF3:k[56]=$748F82EE:k[57]=$78A5636F:k[58]=$84C87814:k[59]=$8CC70208
k[60]=$90BEFFFA:k[61]=$A4506CEB:k[62]=$BEF9A3F7:k[63]=$C67178F2
Local intCount=(((inlen+8)Shr 6)+1)Shl 4
Dim SHA256_Dat(intCount-1)
For c=1 To inlen
SHA256_Dat((c-1)Shr 2)=(SHA256_Dat((c-1)Shr 2)Shl 8)Or(Asc(Mid$(in$,c,1))And $FF)
Next
SHA256_Dat(inlen Shr 2)=((SHA256_Dat(inlen Shr 2)Shl 8)Or $80)Shl((3-(inlen And 3))Shl 3)
SHA256_Dat(intCount-2)=((inlen Shl 3)Shr 31)Shr 1
SHA256_Dat(intCount-1)=(inlen Shl 3)And $FFFFFFFF
For chunkStart=0 To intCount-1 Step 16
a=h0:b=h1:c=h2:d=h3:e=h4:f=h5:g=h6:h=h7
Local w[63]
For y=0 To 15
w[y]=SHA256_Dat(chunkStart+y)
Next
For i=16 To 63
w[i]=w[i-16]+((((w[i-15])Shr 7)Or((w[i-15])Shl 25))Xor(((w[i-15])Shr 18)Or((w[i-15])Shl 14))Xor(w[i-15]Shr 3))
w[i]=w[i]+w[i-7]+((((w[i-2])Shr 17)Or((w[i-2])Shl 15))Xor(((w[i-2])Shr 19)Or((w[i-2])Shl 13))Xor(w[i-2]Shr 10))
Next
For i=0 To 63
t0=(((a Shr 2)Or(a Shl 30))Xor((a Shr 13)Or(a Shl 19))Xor((a Shr 22)Or(a Shl 10)))
t0=t0+((a And b)Or(b And c)Or(c And a))
t1=h+(((e Shr 6)Or(e Shl 26))Xor((e Shr 11)Or(e Shl 21))Xor((e Shr 25)Or(e Shl 7)))
t1=t1+((e And f)Or(~e And g))+k[i]+w[i]
h=g:g=f:f=e:e=d+t1:d=c:c=b:b=a:a=t0+t1
Next
h0=h0+a:h1=h1+b:h2=h2+c:h3=h3+d:h4=h4+e:h5=h5+f:h6=h6+g:h7=h7+h
Next
Return Lower(Hex(h0)+Hex(h1)+Hex(h2)+Hex(h3)+Hex(h4)+Hex(h5)+Hex(h6)+Hex(h7))
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group