Skip to content

Commit 9ad84d0

Browse files
committed
add random test
1 parent ef8b252 commit 9ad84d0

File tree

2 files changed

+42
-9
lines changed

2 files changed

+42
-9
lines changed

qpp.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,21 +197,21 @@ func (qpp *QuantumPermutationPad) DecryptWithPRNG(data []byte, rand *Rand) {
197197

198198
// handle unaligned 8bytes
199199
if count != 0 {
200-
i := 0
201-
for ; i < len(data); i++ {
200+
offset := 0
201+
for ; offset < len(data); offset++ {
202202
rr = byte(r >> (count * 8))
203-
data[i] = *(*byte)(unsafe.Pointer(base + uintptr(data[i]))) ^ rr
203+
data[offset] = *(*byte)(unsafe.Pointer(base + uintptr(data[offset]))) ^ rr
204204
count++
205205

206206
if count == PAD_SWITCH {
207207
r = xorshift64star(r)
208208
base = qpp.rpadsPtr + uintptr(uint16(r)%qpp.numPads)<<8
209-
i = i + 1
209+
offset = offset + 1
210210
count = 0
211211
break
212212
}
213213
}
214-
data = data[i:]
214+
data = data[offset:]
215215
}
216216

217217
// handle 8-bytes aligned

qpp_test.go

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,43 @@ func TestEncryption3(t *testing.T) {
8484
assert.NotEqual(t, original, msg, "not encrypted")
8585

8686
// 12 = 9 + 1 + 2
87-
//receiver.Decrypt(msg[:9])
88-
//receiver.Decrypt(msg[9:10])
89-
//receiver.Decrypt(msg[10:])
90-
receiver.Decrypt(msg)
87+
receiver.Decrypt(msg[:9])
88+
receiver.Decrypt(msg[9:10])
89+
receiver.Decrypt(msg[10:])
90+
//receiver.Decrypt(msg)
91+
assert.Equal(t, original, msg, "not equal")
92+
}
93+
94+
func TestEncryptionRandLength(t *testing.T) {
95+
seed := make([]byte, 32)
96+
io.ReadFull(rand.Reader, seed)
97+
98+
sender := NewQPP(seed, 1024)
99+
receiver := NewQPP(seed, 1024)
100+
101+
original := make([]byte, 10*1024*1024)
102+
io.ReadFull(rand.Reader, original)
103+
msg := make([]byte, len(original))
104+
copy(msg, original)
105+
106+
// 12 == 3 + 5 + 4
107+
start := msg
108+
for len(start) > 0 {
109+
l := mathrand.Intn(len(start)+1) % 256
110+
sender.Encrypt(start[:l])
111+
start = start[l:]
112+
}
113+
//sender.Encrypt(msg)
114+
assert.NotEqual(t, original, msg, "not encrypted")
115+
116+
// 12 = 9 + 1 + 2
117+
start = msg
118+
for len(start) > 0 {
119+
l := mathrand.Intn(len(start)+1) % 256
120+
receiver.Decrypt(start[:l])
121+
start = start[l:]
122+
}
123+
//receiver.Decrypt(msg)
91124
assert.Equal(t, original, msg, "not equal")
92125
}
93126

0 commit comments

Comments
 (0)