v / vlib / crypto / des / des_test.v
49 lines · 37 sloc · 1.03 KB · f09826e928f9612bab9299faefff7cf34a503362
Raw
1import crypto.des
2
3const key = '123456789012345678901234'.bytes()
4const iv = 'abcdegfh'.bytes()
5const str = 'aaaaaaaa'
6
7fn test_triple_des() {
8 mut src := str.bytes()
9
10 triple_des_en(mut src, key, iv)
11 assert src.hex() == '45902cf00aa1df46'
12
13 triple_des_de(mut src, key, iv)
14 assert src.bytestr() == str
15 println('test_triple_des ok')
16}
17
18fn test_des() {
19 mut src := str.bytes()
20
21 des_en(mut src, key[..8], iv)
22 assert src.hex() == '72dca13c37223cf0'
23
24 des_de(mut src, key[..8], iv)
25 assert src.bytestr() == str
26
27 println('test_des ok')
28}
29
30fn des_en(mut src []u8, key []u8, iv []u8) {
31 block := des.new_cipher(key)
32 block.encrypt(mut src, src.clone())
33}
34
35fn des_de(mut src []u8, key []u8, iv []u8) {
36 block := des.new_cipher(key)
37 block.decrypt(mut src, src.clone())
38}
39
40fn triple_des_en(mut src []u8, key []u8, iv []u8) {
41 block := des.new_triple_des_cipher(key)
42 block.encrypt(mut src, src.clone())
43}
44
45fn triple_des_de(mut src []u8, key []u8, iv []u8) {
46 block := des.new_triple_des_cipher(key)
47 inbuf := src.clone()
48 block.decrypt(mut src, inbuf)
49}
50