Skip to content

Commit f252938

Browse files
committed
Start working on set 3, challenge 19
1 parent 8fbddd7 commit f252938

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

challenge3_18.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ func main() {
1515
key := []byte("YELLOW SUBMARINE")
1616
nonce := uint64(0)
1717
ciphertext, _ := base64.StdEncoding.DecodeString(ciphertextBase64)
18-
fmt.Println(string(tools.EncryptAesCtr(ciphertext, key, nonce)))
18+
fmt.Println(string(tools.DecryptAesCtr(ciphertext, key, nonce)))
1919
}

challenge3_19.go

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"encoding/base64"
6+
"fmt"
7+
"log"
8+
"math/rand"
9+
"os"
10+
"time"
11+
12+
"github.com/robquant/cryptopals/pkg/tools"
13+
)
14+
15+
func main() {
16+
file, err := os.Open("input/input3_19.txt")
17+
if err != nil {
18+
log.Fatal(err)
19+
}
20+
defer file.Close()
21+
22+
key := make([]byte, 16)
23+
rand.Seed(time.Now().UnixNano())
24+
rand.Read(key)
25+
nonce := uint64(0)
26+
27+
scanner := bufio.NewScanner(file)
28+
for scanner.Scan() {
29+
plaintext, _ := base64.StdEncoding.DecodeString(scanner.Text())
30+
fmt.Println(tools.EncryptAesCtr(plaintext, key, nonce))
31+
}
32+
33+
if err := scanner.Err(); err != nil {
34+
log.Fatal(err)
35+
}
36+
}

input/input3_19.txt

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
SSBoYXZlIG1ldCB0aGVtIGF0IGNsb3NlIG9mIGRheQ==
2+
Q29taW5nIHdpdGggdml2aWQgZmFjZXM=
3+
RnJvbSBjb3VudGVyIG9yIGRlc2sgYW1vbmcgZ3JleQ==
4+
RWlnaHRlZW50aC1jZW50dXJ5IGhvdXNlcy4=
5+
SSBoYXZlIHBhc3NlZCB3aXRoIGEgbm9kIG9mIHRoZSBoZWFk
6+
T3IgcG9saXRlIG1lYW5pbmdsZXNzIHdvcmRzLA==
7+
T3IgaGF2ZSBsaW5nZXJlZCBhd2hpbGUgYW5kIHNhaWQ=
8+
UG9saXRlIG1lYW5pbmdsZXNzIHdvcmRzLA==
9+
QW5kIHRob3VnaHQgYmVmb3JlIEkgaGFkIGRvbmU=
10+
T2YgYSBtb2NraW5nIHRhbGUgb3IgYSBnaWJl
11+
VG8gcGxlYXNlIGEgY29tcGFuaW9u
12+
QXJvdW5kIHRoZSBmaXJlIGF0IHRoZSBjbHViLA==
13+
QmVpbmcgY2VydGFpbiB0aGF0IHRoZXkgYW5kIEk=
14+
QnV0IGxpdmVkIHdoZXJlIG1vdGxleSBpcyB3b3JuOg==
15+
QWxsIGNoYW5nZWQsIGNoYW5nZWQgdXR0ZXJseTo=
16+
QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=
17+
VGhhdCB3b21hbidzIGRheXMgd2VyZSBzcGVudA==
18+
SW4gaWdub3JhbnQgZ29vZCB3aWxsLA==
19+
SGVyIG5pZ2h0cyBpbiBhcmd1bWVudA==
20+
VW50aWwgaGVyIHZvaWNlIGdyZXcgc2hyaWxsLg==
21+
V2hhdCB2b2ljZSBtb3JlIHN3ZWV0IHRoYW4gaGVycw==
22+
V2hlbiB5b3VuZyBhbmQgYmVhdXRpZnVsLA==
23+
U2hlIHJvZGUgdG8gaGFycmllcnM/
24+
VGhpcyBtYW4gaGFkIGtlcHQgYSBzY2hvb2w=
25+
QW5kIHJvZGUgb3VyIHdpbmdlZCBob3JzZS4=
26+
VGhpcyBvdGhlciBoaXMgaGVscGVyIGFuZCBmcmllbmQ=
27+
V2FzIGNvbWluZyBpbnRvIGhpcyBmb3JjZTs=
28+
SGUgbWlnaHQgaGF2ZSB3b24gZmFtZSBpbiB0aGUgZW5kLA==
29+
U28gc2Vuc2l0aXZlIGhpcyBuYXR1cmUgc2VlbWVkLA==
30+
U28gZGFyaW5nIGFuZCBzd2VldCBoaXMgdGhvdWdodC4=
31+
VGhpcyBvdGhlciBtYW4gSSBoYWQgZHJlYW1lZA==
32+
QSBkcnVua2VuLCB2YWluLWdsb3Jpb3VzIGxvdXQu
33+
SGUgaGFkIGRvbmUgbW9zdCBiaXR0ZXIgd3Jvbmc=
34+
VG8gc29tZSB3aG8gYXJlIG5lYXIgbXkgaGVhcnQs
35+
WWV0IEkgbnVtYmVyIGhpbSBpbiB0aGUgc29uZzs=
36+
SGUsIHRvbywgaGFzIHJlc2lnbmVkIGhpcyBwYXJ0
37+
SW4gdGhlIGNhc3VhbCBjb21lZHk7
38+
SGUsIHRvbywgaGFzIGJlZW4gY2hhbmdlZCBpbiBoaXMgdHVybiw=
39+
VHJhbnNmb3JtZWQgdXR0ZXJseTo=
40+
QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=

pkg/tools/aes.go

+4
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ func (ks *AesCtrKeyStream) NextByte() byte {
132132
return b
133133
}
134134

135+
func (ks *AesCtrKeyStream) Reset() {
136+
ks.byteCounter = 0
137+
}
138+
135139
func EncryptAesCtr(plaintext, key []byte, nonce uint64) []byte {
136140
ks := NewAesCtrKeyStream(key, nonce)
137141
return ctrStream(plaintext, ks)

0 commit comments

Comments
 (0)