1
2
3
4
5 package rc2
6
7 import (
8 "bytes"
9 "encoding/hex"
10 "testing"
11 )
12
13 func TestEncryptDecrypt(t *testing.T) {
14
15 var tests = []struct {
16 key string
17 plain string
18 cipher string
19 t1 int
20 }{
21 {
22 "0000000000000000",
23 "0000000000000000",
24 "ebb773f993278eff",
25 63,
26 },
27 {
28 "ffffffffffffffff",
29 "ffffffffffffffff",
30 "278b27e42e2f0d49",
31 64,
32 },
33 {
34 "3000000000000000",
35 "1000000000000001",
36 "30649edf9be7d2c2",
37 64,
38 },
39 {
40 "88",
41 "0000000000000000",
42 "61a8a244adacccf0",
43 64,
44 },
45 {
46 "88bca90e90875a",
47 "0000000000000000",
48 "6ccf4308974c267f",
49 64,
50 },
51 {
52 "88bca90e90875a7f0f79c384627bafb2",
53 "0000000000000000",
54 "1a807d272bbe5db1",
55 64,
56 },
57 {
58 "88bca90e90875a7f0f79c384627bafb2",
59 "0000000000000000",
60 "2269552ab0f85ca6",
61 128,
62 },
63 {
64 "88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e",
65 "0000000000000000",
66 "5b78d3a43dfff1f1",
67 129,
68 },
69 }
70
71 for _, tt := range tests {
72 k, _ := hex.DecodeString(tt.key)
73 p, _ := hex.DecodeString(tt.plain)
74 c, _ := hex.DecodeString(tt.cipher)
75
76 b, _ := New(k, tt.t1)
77
78 var dst [8]byte
79
80 b.Encrypt(dst[:], p)
81
82 if !bytes.Equal(dst[:], c) {
83 t.Errorf("encrypt failed: got % 2x wanted % 2x\n", dst, c)
84 }
85
86 b.Decrypt(dst[:], c)
87
88 if !bytes.Equal(dst[:], p) {
89 t.Errorf("decrypt failed: got % 2x wanted % 2x\n", dst, p)
90 }
91 }
92 }
93
View as plain text