mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
49 lines
1.4 KiB
V
49 lines
1.4 KiB
V
import crypto.ripemd160
|
|
|
|
struct MdTest {
|
|
o string
|
|
i string
|
|
}
|
|
|
|
const vectors = [
|
|
MdTest{'9c1185a5c5e9fc54612808977ee8f548b2258d31', ''},
|
|
MdTest{'0bdc9d2d256b3ee9daae347be6f4dc835a467ffe', 'a'},
|
|
MdTest{'8eb208f7e05d987a9b044a8e98c6b087f15a0bfc', 'abc'},
|
|
MdTest{'5d0689ef49d2fae572b881b123a85ffa21595f36', 'message digest'},
|
|
MdTest{'f71c27109c692c1b56bbdceb5b9d2865b3708dbc', 'abcdefghijklmnopqrstuvwxyz'},
|
|
MdTest{'12a053384a9c0c88e405a06c27dcf49ada62eb2b', 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'},
|
|
MdTest{'b0e20b6e3116640286ed3a87a5713079b21f5189', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'},
|
|
MdTest{'9b752e45573d4b39f4dbd3323cab82bf63326bfb', '12345678901234567890123456789012345678901234567890123456789012345678901234567890'},
|
|
]
|
|
|
|
fn test_vectors() {
|
|
for tv in vectors {
|
|
mut md := ripemd160.new()
|
|
for j := 0; j < 3; j++ {
|
|
if j < 2 {
|
|
md.write(tv.i.bytes()) or { panic(err) }
|
|
} else {
|
|
half := tv.i.len / 2
|
|
md.write(tv.i.bytes()[0..tv.i.len / 2]) or { panic(err) }
|
|
md.sum([])
|
|
md.write(tv.i.bytes()[tv.i.len / 2..]) or { panic(err) }
|
|
}
|
|
assert md.sum([]).hex() == tv.o
|
|
md.reset()
|
|
}
|
|
}
|
|
}
|
|
|
|
fn million_a() string {
|
|
mut md := ripemd160.new()
|
|
for _ in 0 .. 100000 {
|
|
md.write('aaaaaaaaaa'.bytes()) or { panic(err) }
|
|
}
|
|
return md.sum([]).hex()
|
|
}
|
|
|
|
fn test_million_a() {
|
|
out := '52783243c1697bdbe16d37f97f68f08325dc1528'
|
|
s := million_a()
|
|
assert s == out
|
|
}
|