June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue