Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
2
Task/MD5/8th/md5.8th
Normal file
2
Task/MD5/8th/md5.8th
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
"md5" cr:hash! "Some text" cr:hash cr:hash>s
|
||||
. cr bye
|
||||
75
Task/MD5/Futhark/md5.futhark
Normal file
75
Task/MD5/Futhark/md5.futhark
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
type md5 = (u32, u32, u32, u32)
|
||||
|
||||
fun rs(): [64]u32 =
|
||||
map u32
|
||||
([ 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
|
||||
5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
|
||||
4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
|
||||
6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21 ])
|
||||
|
||||
fun ks(): [64]u32 =
|
||||
map u32
|
||||
([ 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee ,
|
||||
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501 ,
|
||||
0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be ,
|
||||
0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821 ,
|
||||
0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa ,
|
||||
0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8 ,
|
||||
0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed ,
|
||||
0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a ,
|
||||
0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c ,
|
||||
0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70 ,
|
||||
0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05 ,
|
||||
0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665 ,
|
||||
0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039 ,
|
||||
0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1 ,
|
||||
0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1 ,
|
||||
0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 ])
|
||||
|
||||
fun md5(ms: [n][16]u32): md5 =
|
||||
let a0 = u32(0x67452301)
|
||||
let b0 = u32(0xefcdab89)
|
||||
let c0 = u32(0x98badcfe)
|
||||
let d0 = u32(0x10325476)
|
||||
loop ((a0,b0,c0,d0)) = for i < n do
|
||||
let (a,b,c,d) = md5_chunk (a0,b0,c0,d0) ms[i]
|
||||
in (a0+a, b0+b, c0+c, d0+d)
|
||||
in (a0,b0,c0,d0)
|
||||
|
||||
fun rotate_left(x: u32, c: u32): u32 = (x << c) | (x >> (32u32 - c))
|
||||
|
||||
fun bytes(x: u32): [4]u8 = [u8(x),
|
||||
u8(x/0x100u32),
|
||||
u8(x/0x10000u32),
|
||||
u8(x/0x1000000u32)]
|
||||
|
||||
fun unbytes(bs: [4]u8): u32 =
|
||||
u32(bs[0]) +
|
||||
u32(bs[1]) * 0x100u32 +
|
||||
u32(bs[2]) * 0x10000u32 +
|
||||
u32(bs[3]) * 0x1000000u32
|
||||
|
||||
fun unbytes_block(block: [64]u8): [16]u32 =
|
||||
map unbytes (reshape (16,4) block)
|
||||
|
||||
fun main(ms: [n]u8): [16]u8 =
|
||||
let padding = 64 - (n % 64)
|
||||
let n_padded = n + padding
|
||||
let ms_padded = concat ms (bytes 0x80u32) (replicate (padding-12) 0x0u8) (bytes (u32(n*8))) ([0u8,0u8,0u8,0u8])
|
||||
let (a,b,c,d) = md5 (map unbytes_block (reshape (n_padded / 64, 64) ms_padded))
|
||||
in reshape 16 (map bytes ([a,b,c,d]))
|
||||
|
||||
-- Process 512 bits of the input.
|
||||
fun md5_chunk ((a0,b0,c0,d0): md5) (m: [16]u32): md5 =
|
||||
loop ((a,b,c,d) = (a0,b0,c0,d0)) = for i < 64 do
|
||||
let (f,g) =
|
||||
if i < 16 then ((b & c) | ((~b) & d),
|
||||
i)
|
||||
else if i < 32 then ((d & b) | ((~d) & c),
|
||||
i32((5u32*u32(i) + 1u32) % 16u32))
|
||||
else if i < 48 then (b ^ c ^ d,
|
||||
i32((3u32*u32(i) + 5u32) % 16u32))
|
||||
else (c ^ (b | (~d)),
|
||||
i32((7u32*u32(i)) % 16u32))
|
||||
in (d, b + rotate_left(a + f + (ks())[i] + m[g], (rs())[i]), b, c)
|
||||
in (a,b,c,d)
|
||||
2
Task/MD5/Lasso/md5-1.lasso
Normal file
2
Task/MD5/Lasso/md5-1.lasso
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Encrypt_MD5('Welcome all Rhinos!')
|
||||
//80ba88ee2600e9e9b36e739458c39ebd
|
||||
12
Task/MD5/Lasso/md5-2.lasso
Normal file
12
Task/MD5/Lasso/md5-2.lasso
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
local(test = map(
|
||||
'a' = '0cc175b9c0f1b6a831c399e269772661',
|
||||
'abc' = '900150983cd24fb0d6963f7d28e17f72',
|
||||
'message digest' = 'f96b697d7cb7938d525a2f31aaf161d0',
|
||||
'abcdefghijklmnopqrstuvwxyz' = 'c3fcd3d76192e4007dfb496cca67e13b',
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' = 'd174ab98d277d9f5a5611c2c9f419d9f',
|
||||
'12345678901234567890123456789012345678901234567890123456789012345678901234567890' = '57edf4a22be3c955ac49da2e2107b67a'
|
||||
)
|
||||
)
|
||||
with a in #test->keys do => {^
|
||||
'testing: "'+#a+'": '+(Encrypt_MD5(#a)->asBytes == #test->find(#a)->asBytes)+'\r'
|
||||
^}
|
||||
1
Task/MD5/Lingo/md5-1.lingo
Normal file
1
Task/MD5/Lingo/md5-1.lingo
Normal file
|
|
@ -0,0 +1 @@
|
|||
put cx_md5_string(str)
|
||||
282
Task/MD5/Lingo/md5-2.lingo
Normal file
282
Task/MD5/Lingo/md5-2.lingo
Normal file
|
|
@ -0,0 +1,282 @@
|
|||
----------------------------------------
|
||||
-- Calculates MD5 hash of string or bytearray
|
||||
-- @param {bytearray|string} input
|
||||
-- @return {bytearray} (16 bytes)
|
||||
----------------------------------------
|
||||
on md5 (input)
|
||||
if stringP(input) then input = bytearray(input)
|
||||
|
||||
-- Convert string to list of little-endian words...
|
||||
t_iLen = input.length * 8
|
||||
t_iCnt = (t_iLen + 64) / 512 * 16 + 16
|
||||
|
||||
-- Create list, fill with zeros...
|
||||
x = []
|
||||
x.SetAt(t_iCnt, 0)
|
||||
|
||||
t_fArr = [1, 256, 65536, 16777216]
|
||||
i = 0
|
||||
j = 0
|
||||
repeat while i < t_iLen
|
||||
j = j + 1
|
||||
t_iNext = i / 32 + 1
|
||||
t_iTemp = bitAnd(input[i/8+1], 255) * t_fArr[j]
|
||||
x[t_iNext] = bitOr(x[t_iNext], t_iTemp)
|
||||
i = i + 8
|
||||
j = j mod 4
|
||||
end repeat
|
||||
|
||||
-- Append padding...
|
||||
t_iNext = t_iLen / 32 + 1
|
||||
x[t_iNext] = bitOr(x[t_iNext], 128 * t_fArr[j + 1])
|
||||
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
|
||||
oldd = d
|
||||
|
||||
-- Round(1) --
|
||||
n = bitOr(bitAnd(b, c), bitAnd(bitNot(b), d)) + a + x[i] - 680876936
|
||||
if(n < 0) then a = bitOr(n * 128, bitOr((n + t_iWrap) / 33554432, 64)) + b
|
||||
else a = bitOr(n * 128, n / 33554432) + b
|
||||
n = bitOr(bitAnd(a, b), bitAnd(bitNot(a), c)) + d + x[i + 1] - 389564586
|
||||
if(n < 0) then d = bitOr(n * 4096, bitOr((n + t_iWrap) / 1048576, 2048)) + a
|
||||
else d = bitOr(n * 4096, n / 1048576) + a
|
||||
n = bitOr(bitAnd(d, a), bitAnd(bitNot(d), b)) + c + x[i + 2] + 606105819
|
||||
if(n < 0) then c = bitOr(n * 131072, bitOr((n + t_iWrap) / 32768, 65536)) + d
|
||||
else c = bitOr(n * 131072, n / 32768) + d
|
||||
n = bitOr(bitAnd(c, d), bitAnd(bitNot(c), a)) + b + x[i + 3] - 1044525330
|
||||
if(n < 0) then b = bitOr(n * 4194304, bitOr((n + t_iWrap) / 1024, 2097152)) + c
|
||||
else b = bitOr(n * 4194304, n / 1024) + c
|
||||
n = bitOr(bitAnd(b, c), bitAnd(bitNot(b), d)) + a + x[i + 4] - 176418897
|
||||
if(n < 0) then a = bitOr(n * 128, bitOr((n + t_iWrap) / 33554432, 64)) + b
|
||||
else a = bitOr(n * 128, n / 33554432) + b
|
||||
n = bitOr(bitAnd(a, b), bitAnd(bitNot(a), c)) + d + x[i + 5] + 1200080426
|
||||
if(n < 0) then d = bitOr(n * 4096, bitOr((n + t_iWrap) / 1048576, 2048)) + a
|
||||
else d = bitOr(n * 4096, n / 1048576) + a
|
||||
n = bitOr(bitAnd(d, a), bitAnd(bitNot(d), b)) + c + x[i + 6] - 1473231341
|
||||
if(n < 0) then c = bitOr(n * 131072, bitOr((n + t_iWrap) / 32768, 65536)) + d
|
||||
else c = bitOr(n * 131072, n / 32768) + d
|
||||
n = bitOr(bitAnd(c, d), bitAnd(bitNot(c), a)) + b + x[i + 7] - 45705983
|
||||
if(n < 0) then b = bitOr(n * 4194304, bitOr((n + t_iWrap) / 1024, 2097152)) + c
|
||||
else b = bitOr(n * 4194304, n / 1024) + c
|
||||
n = bitOr(bitAnd(b, c), bitAnd(bitNot(b), d)) + a + x[i + 8] + 1770035416
|
||||
if(n < 0) then a = bitOr(n * 128, bitOr((n + t_iWrap) / 33554432, 64)) + b
|
||||
else a = bitOr(n * 128, n / 33554432) + b
|
||||
n = bitOr(bitAnd(a, b), bitAnd(bitNot(a), c)) + d + x[i + 9] - 1958414417
|
||||
if(n < 0) then d = bitOr(n * 4096, bitOr((n + t_iWrap) / 1048576, 2048)) + a
|
||||
else d = bitOr(n * 4096, n / 1048576) + a
|
||||
n = bitOr(bitAnd(d, a), bitAnd(bitNot(d), b)) + c + x[i + 10] - 42063
|
||||
if(n < 0) then c = bitOr(n * 131072, bitOr((n + t_iWrap) / 32768, 65536)) + d
|
||||
else c = bitOr(n * 131072, n / 32768) + d
|
||||
n = bitOr(bitAnd(c, d), bitAnd(bitNot(c), a)) + b + x[i + 11] - 1990404162
|
||||
if(n < 0) then b = bitOr(n * 4194304, bitOr((n + t_iWrap) / 1024, 2097152)) + c
|
||||
else b = bitOr(n * 4194304, n / 1024) + c
|
||||
n = bitOr(bitAnd(b, c), bitAnd(bitNot(b), d)) + a + x[i + 12] + 1804603682
|
||||
if(n < 0) then a = bitOr(n * 128, bitOr((n + t_iWrap) / 33554432, 64)) + b
|
||||
else a = bitOr(n * 128, n / 33554432) + b
|
||||
n = bitOr(bitAnd(a, b), bitAnd(bitNot(a), c)) + d + x[i + 13] - 40341101
|
||||
if(n < 0) then d = bitOr(n * 4096, bitOr((n + t_iWrap) / 1048576, 2048)) + a
|
||||
else d = bitOr(n * 4096, n / 1048576) + a
|
||||
n = bitOr(bitAnd(d, a), bitAnd(bitNot(d), b)) + c + x[i + 14] - 1502002290
|
||||
if(n < 0) then c = bitOr(n * 131072, bitOr((n + t_iWrap) / 32768, 65536)) + d
|
||||
else c = bitOr(n * 131072, n / 32768) + d
|
||||
n = bitOr(bitAnd(c, d), bitAnd(bitNot(c), a)) + b + x[i + 15] + 1236535329
|
||||
if(n < 0) then b = bitOr(n * 4194304, bitOr((n + t_iWrap) / 1024, 2097152)) + c
|
||||
else b = bitOr(n * 4194304, n / 1024) + c
|
||||
|
||||
-- Round(2) --
|
||||
n = bitOr(bitAnd(b, d), bitAnd(c, bitNot(d))) + a + x[i + 1] - 165796510
|
||||
if(n < 0) then a = bitOr(n * 32, bitOr((n + t_iWrap) / 134217728, 16)) + b
|
||||
else a = bitOr(n * 32, n / 134217728) + b
|
||||
n = bitOr(bitAnd(a, c), bitAnd(b, bitNot(c))) + d + x[i + 6] - 1069501632
|
||||
if(n < 0) then d = bitOr(n * 512, bitOr((n + t_iWrap) / 8388608, 256)) + a
|
||||
else d = bitOr(n * 512, n / 8388608) + a
|
||||
n = bitOr(bitAnd(d, b), bitAnd(a, bitNot(b))) + c + x[i + 11] + 643717713
|
||||
if(n < 0) then c = bitOr(n * 16384, bitOr((n + t_iWrap) / 262144, 8192)) + d
|
||||
else c = bitOr(n * 16384, n / 262144) + d
|
||||
n = bitOr(bitAnd(c, a), bitAnd(d, bitNot(a))) + b + x[i] - 373897302
|
||||
if(n < 0) then b = bitOr(n * 1048576, bitOr((n + t_iWrap) / 4096, 524288)) + c
|
||||
else b = bitOr(n * 1048576, n / 4096) + c
|
||||
n = bitOr(bitAnd(b, d), bitAnd(c, bitNot(d))) + a + x[i + 5] - 701558691
|
||||
if(n < 0) then a = bitOr(n * 32, bitOr((n + t_iWrap) / 134217728, 16)) + b
|
||||
else a = bitOr(n * 32, n / 134217728) + b
|
||||
n = bitOr(bitAnd(a, c), bitAnd(b, bitNot(c))) + d + x[i + 10] + 38016083
|
||||
if(n < 0) then d = bitOr(n * 512, bitOr((n + t_iWrap) / 8388608, 256)) + a
|
||||
else d = bitOr(n * 512, n / 8388608) + a
|
||||
n = bitOr(bitAnd(d, b), bitAnd(a, bitNot(b))) + c + x[i + 15] - 660478335
|
||||
if(n < 0) then c = bitOr(n * 16384, bitOr((n + t_iWrap) / 262144, 8192)) + d
|
||||
else c = bitOr(n * 16384, n / 262144) + d
|
||||
n = bitOr(bitAnd(c, a), bitAnd(d, bitNot(a))) + b + x[i + 4] - 405537848
|
||||
if(n < 0) then b = bitOr(n * 1048576, bitOr((n + t_iWrap) / 4096, 524288)) + c
|
||||
else b = bitOr(n * 1048576, n / 4096) + c
|
||||
n = bitOr(bitAnd(b, d), bitAnd(c, bitNot(d))) + a + x[i + 9] + 568446438
|
||||
if(n < 0) then a = bitOr(n * 32, bitOr((n + t_iWrap) / 134217728, 16)) + b
|
||||
else a = bitOr(n * 32, n / 134217728) + b
|
||||
n = bitOr(bitAnd(a, c), bitAnd(b, bitNot(c))) + d + x[i + 14] - 1019803690
|
||||
if(n < 0) then d = bitOr(n * 512, bitOr((n + t_iWrap) / 8388608, 256)) + a
|
||||
else d = bitOr(n * 512, n / 8388608) + a
|
||||
n = bitOr(bitAnd(d, b), bitAnd(a, bitNot(b))) + c + x[i + 3] - 187363961
|
||||
if(n < 0) then c = bitOr(n * 16384, bitOr((n + t_iWrap) / 262144, 8192)) + d
|
||||
else c = bitOr(n * 16384, n / 262144) + d
|
||||
n = bitOr(bitAnd(c, a), bitAnd(d, bitNot(a))) + b + x[i + 8] + 1163531501
|
||||
if(n < 0) then b = bitOr(n * 1048576, bitOr((n + t_iWrap) / 4096, 524288)) + c
|
||||
else b = bitOr(n * 1048576, n / 4096) + c
|
||||
n = bitOr(bitAnd(b, d), bitAnd(c, bitNot(d))) + a + x[i + 13] - 1444681467
|
||||
if(n < 0) then a = bitOr(n * 32, bitOr((n + t_iWrap) / 134217728, 16)) + b
|
||||
else a = bitOr(n * 32, n / 134217728) + b
|
||||
n = bitOr(bitAnd(a, c), bitAnd(b, bitNot(c))) + d + x[i + 2] - 51403784
|
||||
if(n < 0) then d = bitOr(n * 512, bitOr((n + t_iWrap) / 8388608, 256)) + a
|
||||
else d = bitOr(n * 512, n / 8388608) + a
|
||||
n = bitOr(bitAnd(d, b), bitAnd(a, bitNot(b))) + c + x[i + 7] + 1735328473
|
||||
if(n < 0) then c = bitOr(n * 16384, bitOr((n + t_iWrap) / 262144, 8192)) + d
|
||||
else c = bitOr(n * 16384, n / 262144) + d
|
||||
n = bitOr(bitAnd(c, a), bitAnd(d, bitNot(a))) + b + x[i + 12] - 1926607734
|
||||
if(n < 0) then b = bitOr(n * 1048576, bitOr((n + t_iWrap) / 4096, 524288)) + c
|
||||
else b = bitOr(n * 1048576, n / 4096) + c
|
||||
|
||||
-- Round(3) --
|
||||
n = bitXor(bitXor(b, c), d) + a + x[i + 5] - 378558
|
||||
if(n < 0) then a = bitOr(n * 16, bitOr((n + t_iWrap) / 268435456, 8)) + b
|
||||
else a = bitOr(n * 16, n / 268435456) + b
|
||||
n = bitXor(bitXor(a, b), c) + d + x[i + 8] - 2022574463
|
||||
if(n < 0) then d = bitOr(n * 2048, bitOr((n + t_iWrap) / 2097152, 1024)) + a
|
||||
else d = bitOr(n * 2048, n / 2097152) + a
|
||||
n = bitXor(bitXor(d, a), b) + c + x[i + 11] + 1839030562
|
||||
if(n < 0) then c = bitOr(n * 65536, bitOr((n + t_iWrap) / 65536, 32768)) + d
|
||||
else c = bitOr(n * 65536, n / 65536) + d
|
||||
n = bitXor(bitXor(c, d), a) + b + x[i + 14] - 35309556
|
||||
if(n < 0) then b = bitOr(n * 8388608, bitOr((n + t_iWrap) / 512, 4194304)) + c
|
||||
else b = bitOr(n * 8388608, n / 512) + c
|
||||
n = bitXor(bitXor(b, c), d) + a + x[i + 1] - 1530992060
|
||||
if(n < 0) then a = bitOr(n * 16, bitOr((n + t_iWrap) / 268435456, 8)) + b
|
||||
else a = bitOr(n * 16, n / 268435456) + b
|
||||
n = bitXor(bitXor(a, b), c) + d + x[i + 4] + 1272893353
|
||||
if(n < 0) then d = bitOr(n * 2048, bitOr((n + t_iWrap) / 2097152, 1024)) + a
|
||||
else d = bitOr(n * 2048, n / 2097152) + a
|
||||
n = bitXor(bitXor(d, a), b) + c + x[i + 7] - 155497632
|
||||
if(n < 0) then c = bitOr(n * 65536, bitOr((n + t_iWrap) / 65536, 32768)) + d
|
||||
else c = bitOr(n * 65536, n / 65536) + d
|
||||
n = bitXor(bitXor(c, d), a) + b + x[i + 10] - 1094730640
|
||||
if(n < 0) then b = bitOr(n * 8388608, bitOr((n + t_iWrap) / 512, 4194304)) + c
|
||||
else b = bitOr(n * 8388608, n / 512) + c
|
||||
n = bitXor(bitXor(b, c), d) + a + x[i + 13] + 681279174
|
||||
if(n < 0) then a = bitOr(n * 16, bitOr((n + t_iWrap) / 268435456, 8)) + b
|
||||
else a = bitOr(n * 16, n / 268435456) + b
|
||||
n = bitXor(bitXor(a, b), c) + d + x[i] - 358537222
|
||||
if(n < 0) then d = bitOr(n * 2048, bitOr((n + t_iWrap) / 2097152, 1024)) + a
|
||||
else d = bitOr(n * 2048, n / 2097152) + a
|
||||
n = bitXor(bitXor(d, a), b) + c + x[i + 3] - 722521979
|
||||
if(n < 0) then c = bitOr(n * 65536, bitOr((n + t_iWrap) / 65536, 32768)) + d
|
||||
else c = bitOr(n * 65536, n / 65536) + d
|
||||
n = bitXor(bitXor(c, d), a) + b + x[i + 6] + 76029189
|
||||
if(n < 0) then b = bitOr(n * 8388608, bitOr((n + t_iWrap) / 512, 4194304)) + c
|
||||
else b = bitOr(n * 8388608, n / 512) + c
|
||||
n = bitXor(bitXor(b, c), d) + a + x[i + 9] - 640364487
|
||||
if(n < 0) then a = bitOr(n * 16, bitOr((n + t_iWrap) / 268435456, 8)) + b
|
||||
else a = bitOr(n * 16, n / 268435456) + b
|
||||
n = bitXor(bitXor(a, b), c) + d + x[i + 12] - 421815835
|
||||
if(n < 0) then d = bitOr(n * 2048, bitOr((n + t_iWrap) / 2097152, 1024)) + a
|
||||
else d = bitOr(n * 2048, n / 2097152) + a
|
||||
n = bitXor(bitXor(d, a), b) + c + x[i + 15] + 530742520
|
||||
if(n < 0) then c = bitOr(n * 65536, bitOr((n + t_iWrap) / 65536, 32768)) + d
|
||||
else c = bitOr(n * 65536, n / 65536) + d
|
||||
n = bitXor(bitXor(c, d), a) + b + x[i + 2] - 995338651
|
||||
if(n < 0) then b = bitOr(n * 8388608, bitOr((n + t_iWrap) / 512, 4194304)) + c
|
||||
else b = bitOr(n * 8388608, n / 512) + c
|
||||
|
||||
-- Round(4) --
|
||||
n = bitXor(c, bitOr(b, bitNot(d))) + a + x[i] - 198630844
|
||||
if(n < 0) then a = bitOr(n * 64, bitOr((n + t_iWrap) / 67108864, 32)) + b
|
||||
else a = bitOr(n * 64, n / 67108864) + b
|
||||
n = bitXor(b, bitOr(a, bitNot(c))) + d + x[i + 7] + 1126891415
|
||||
if(n < 0) then d = bitOr(n * 1024, bitOr((n + t_iWrap) / 4194304, 512)) + a
|
||||
else d = bitOr(n * 1024, n / 4194304) + a
|
||||
n = bitXor(a, bitOr(d, bitNot(b))) + c + x[i + 14] - 1416354905
|
||||
if(n < 0) then c = bitOr(n * 32768, bitOr((n + t_iWrap) / 131072, 16384)) + d
|
||||
else c = bitOr(n * 32768, n / 131072) + d
|
||||
n = bitXor(d, bitOr(c, bitNot(a))) + b + x[i + 5] - 57434055
|
||||
if(n < 0) then b = bitOr(n * 2097152, bitOr((n + t_iWrap) / 2048, 1048576)) + c
|
||||
else b = bitOr(n * 2097152, n / 2048) + c
|
||||
n = bitXor(c, bitOr(b, bitNot(d))) + a + x[i + 12] + 1700485571
|
||||
if(n < 0) then a = bitOr(n * 64, bitOr((n + t_iWrap) / 67108864, 32)) + b
|
||||
else a = bitOr(n * 64, n / 67108864) + b
|
||||
n = bitXor(b, bitOr(a, bitNot(c))) + d + x[i + 3] - 1894986606
|
||||
if(n < 0) then d = bitOr(n * 1024, bitOr((n + t_iWrap) / 4194304, 512)) + a
|
||||
else d = bitOr(n * 1024, n / 4194304) + a
|
||||
n = bitXor(a, bitOr(d, bitNot(b))) + c + x[i + 10] - 1051523
|
||||
if(n < 0) then c = bitOr(n * 32768, bitOr((n + t_iWrap) / 131072, 16384)) + d
|
||||
else c = bitOr(n * 32768, n / 131072) + d
|
||||
n = bitXor(d, bitOr(c, bitNot(a))) + b + x[i + 1] - 2054922799
|
||||
if(n < 0) then b = bitOr(n * 2097152, bitOr((n + t_iWrap) / 2048, 1048576)) + c
|
||||
else b = bitOr(n * 2097152, n / 2048) + c
|
||||
n = bitXor(c, bitOr(b, bitNot(d))) + a + x[i + 8] + 1873313359
|
||||
if(n < 0) then a = bitOr(n * 64, bitOr((n + t_iWrap) / 67108864, 32)) + b
|
||||
else a = bitOr(n * 64, n / 67108864) + b
|
||||
n = bitXor(b, bitOr(a, bitNot(c))) + d + x[i + 15] - 30611744
|
||||
if(n < 0) then d = bitOr(n * 1024, bitOr((n + t_iWrap) / 4194304, 512)) + a
|
||||
else d = bitOr(n * 1024, n / 4194304) + a
|
||||
n = bitXor(a, bitOr(d, bitNot(b))) + c + x[i + 6] - 1560198380
|
||||
if(n < 0) then c = bitOr(n * 32768, bitOr((n + t_iWrap) / 131072, 16384)) + d
|
||||
else c = bitOr(n * 32768, n / 131072) + d
|
||||
n = bitXor(d, bitOr(c, bitNot(a))) + b + x[i + 13] + 1309151649
|
||||
if(n < 0) then b = bitOr(n * 2097152, bitOr((n + t_iWrap) / 2048, 1048576)) + c
|
||||
else b = bitOr(n * 2097152, n / 2048) + c
|
||||
n = bitXor(c, bitOr(b, bitNot(d))) + a + x[i + 4] - 145523070
|
||||
if(n < 0) then a = bitOr(n * 64, bitOr((n + t_iWrap) / 67108864, 32)) + b
|
||||
else a = bitOr(n * 64, n / 67108864) + b
|
||||
n = bitXor(b, bitOr(a, bitNot(c))) + d + x[i + 11] - 1120210379
|
||||
if(n < 0) then d = bitOr(n * 1024, bitOr((n + t_iWrap) / 4194304, 512)) + a
|
||||
else d = bitOr(n * 1024, n / 4194304) + a
|
||||
n = bitXor(a, bitOr(d, bitNot(b))) + c + x[i + 2] + 718787259
|
||||
if(n < 0) then c = bitOr(n * 32768, bitOr((n + t_iWrap) / 131072, 16384)) + d
|
||||
else c = bitOr(n * 32768, n / 131072) + d
|
||||
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
|
||||
if(i > 0) then
|
||||
repeat with n = 1 to 4
|
||||
ba[p] = (i mod 256)
|
||||
i = i / 256
|
||||
p = p+1
|
||||
end repeat
|
||||
else
|
||||
i = bitNot(i)
|
||||
repeat with n = 1 to 4
|
||||
ba[p] = 255-(i mod 256)
|
||||
i = i / 256
|
||||
p = p+1
|
||||
end repeat
|
||||
end if
|
||||
end repeat
|
||||
ba.position = 1
|
||||
return ba
|
||||
end
|
||||
6
Task/MD5/LiveCode/md5-1.livecode
Normal file
6
Task/MD5/LiveCode/md5-1.livecode
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
function md5sum hashtext
|
||||
local md5, mdhex
|
||||
put md5Digest(hashtext) into md5
|
||||
get binaryDecode("H*",md5,mdhex)
|
||||
return mdhex
|
||||
end md5sum
|
||||
24
Task/MD5/LiveCode/md5-2.livecode
Normal file
24
Task/MD5/LiveCode/md5-2.livecode
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
command md5testsuite
|
||||
// rfc1321 MD5 test suite:
|
||||
local md5
|
||||
put md5sum("") is "d41d8cd98f00b204e9800998ecf8427e" into md5["empty"]
|
||||
put md5sum("a") is "0cc175b9c0f1b6a831c399e269772661" into md5["a"]
|
||||
put md5sum("abc") is "900150983cd24fb0d6963f7d28e17f72" into md5["abc"]
|
||||
put md5sum("message digest") is "f96b697d7cb7938d525a2f31aaf161d0" into md5["message digest"]
|
||||
put md5sum("abcdefghijklmnopqrstuvwxyz") is "c3fcd3d76192e4007dfb496cca67e13b" \
|
||||
into md5["abclower"]
|
||||
put md5sum("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") \
|
||||
is "d174ab98d277d9f5a5611c2c9f419d9f" into md5["abcupper"]
|
||||
put md5sum("12345678901234567890123456789012345678901234567890123456789012345678901234567890")\
|
||||
is "57edf4a22be3c955ac49da2e2107b67a" into md5["123"]
|
||||
|
||||
repeat for each line n in the keys of md5
|
||||
if md5[n] is not true then
|
||||
put "err" & tab & n & return after results
|
||||
exit repeat
|
||||
else
|
||||
put "ok" & tab & n & return after results
|
||||
end if
|
||||
end repeat
|
||||
put results
|
||||
end md5testsuite
|
||||
3
Task/MD5/Nim/md5.nim
Normal file
3
Task/MD5/Nim/md5.nim
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import md5
|
||||
|
||||
echo toMD5("The quick brown fox jumped over the lazy dog's back")
|
||||
2
Task/MD5/Ring/md5.ring
Normal file
2
Task/MD5/Ring/md5.ring
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
See MD5("my string!") + nl
|
||||
# output : a83a049fbe50cf7334caa86bf16a3520
|
||||
2
Task/MD5/Sidef/md5-1.sidef
Normal file
2
Task/MD5/Sidef/md5-1.sidef
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
var digest = frequire('Digest::MD5');
|
||||
say digest.md5_hex("The quick brown fox jumped over the lazy dog's back");
|
||||
3
Task/MD5/Sidef/md5-2.sidef
Normal file
3
Task/MD5/Sidef/md5-2.sidef
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
var md5 = require('Digest::MD5').new;
|
||||
md5.add("The quick brown fox jumped over the lazy dog's back");
|
||||
say md5.hexdigest;
|
||||
Loading…
Add table
Add a link
Reference in a new issue