June 2018 Update

This commit is contained in:
Ingy döt Net 2018-06-22 20:57:24 +00:00
parent ba8067c3b7
commit 22f33d4004
5278 changed files with 84726 additions and 14379 deletions

View file

@ -1,19 +1,15 @@
using Nettle
function md5sum(s::String)
bytes2hex(md5_hash(s))
function Base.trunc(s::AbstractString, n::Integer)
n > 0 || throw(DomainError())
l = length(s)
l > n || return s
n > 3 || return s[1:n]
return s[1:n-3] * "..."
end
function Base.trunc(s::String, n::Integer)
0 < n || throw(DomainError())
len = length(s)
len > n || return s
3 < n || return s[1:n]
return s[1:n-3]*"..."
end
tests = ["" => "d41d8cd98f00b204e9800998ecf8427e",
"a" => "0cc175b9c0f1b6a831c399e269772661",
tests = ["" => "d41d8cd98f00b204e9800998ecf8427e",
"a" => "0cc175b9c0f1b6a831c399e269772661",
"abc" => "900150983cd24fb0d6963f7d28e17f72",
"message digest" => "f96b697d7cb7938d525a2f31aaf161d0",
"abcdefghijklmnopqrstuvwxyz" => "c3fcd3d76192e4007dfb496cca67e13b",
@ -23,15 +19,14 @@ tests = ["" => "d41d8cd98f00b204e9800998ecf8427e",
"57edf4a22be3c955ac49da2e2107b67a",
"foobad" => "3858f62230ac3c915f300c664312c63f"]
println("Testing Julia's MD5 hash against RFC 1321.")
for k in sort(collect(keys(tests)), by=(x)->length(x))
mysum = md5sum(k)
print(@sprintf(" %15s => ", trunc(k, 15)), mysum)
if mysum == tests[k]
println(" MD5 OK")
for (k, h) in sort(tests, by = length ∘ first)
md5sum = hexdigest("md5", k)
@printf("%20s → %s ", trunc(k, 15), md5sum)
if md5sum == h
println("MD5 OK")
else
println(" MD5 Bad")
println(" The sum should be ", tests[k])
println("MD5 Bad")
println("* The sum should be ", h)
end
end

View file

@ -12,7 +12,7 @@ on md5 (input)
-- Create list, fill with zeros...
x = []
x.SetAt(t_iCnt, 0)
x[t_iCnt] = 0
t_fArr = [1, 256, 65536, 16777216]
i = 0
@ -32,18 +32,15 @@ on md5 (input)
x[(t_iLen + 64) / 512 * 16 + 15] = t_iLen
-- Actual algorithm starts here...
a = 1732584193
b = -271733879
c = -1732584194
d = 271733878
i = 1
t_iWrap = the maxInteger + 1
t_iCount = x.count + 1
repeat while i < t_iCount
olda = a
oldb = b
oldc = c
@ -248,17 +245,14 @@ on md5 (input)
n = bitXor(d, bitOr(c, bitNot(a))) + b + x[i + 9] - 343485551
if(n < 0) then b = bitOr(n * 2097152, bitOr((n + t_iWrap) / 2048, 1048576)) + c
else b = bitOr(n * 2097152, n / 2048) + c
a = a + olda
b = b + oldb
c = c + oldc
d = d + oldd
i = i + 16
end repeat
t_iArr = [a, b, c, d]
ba = bytearray()
p = 1
repeat with i in t_iArr