diff options
| -rw-r--r-- | challenge/ch13.go | 30 | ||||
| -rw-r--r-- | cryptopals.go | 2 | 
2 files changed, 32 insertions, 0 deletions
diff --git a/challenge/ch13.go b/challenge/ch13.go new file mode 100644 index 0000000..357a802 --- /dev/null +++ b/challenge/ch13.go @@ -0,0 +1,30 @@ +// Copyright © 2020 rsiddharth <s@ricketyspace.net> +// SPDX-License-Identifier: ISC + +package challenge + +import ( +	"fmt" +	"ricketyspace.net/cryptopals/lib" +) + +func C13() { +	adminBlock := lib.BytesToStr(lib.Pkcs7Padding(lib.StrToBytes("admin"), 16)) +	ep := lib.WebProfileFor("foo@abacus" + adminBlock) +	encryptedEP := lib.WebEncryptProfile(ep) +	adminBlockCipher := encryptedEP[16:32] // Second block in the cipher + +	ep = lib.WebProfileFor("foo@abacus") +	encryptedEP = lib.WebEncryptProfile(ep) +	for i := 0; i < 16; i++ { // Replace last block with the admin cipher block. +		encryptedEP[32+i] = adminBlockCipher[i] +	} +	adminEP := lib.WebDecryptProfile(encryptedEP) +	adminProfile := lib.WebDecodeProfile(adminEP) +	fmt.Printf("Admin Encoded Profile: %v\n", adminEP) +	fmt.Printf("Admin Profile: %v\n", adminProfile) +} + +// Output: +// Admin Encoded Profile: email=foo@abacus&uid=10001&role=admin +// Admin Profile: map[email:foo@abacus role:admin uid:10001] diff --git a/cryptopals.go b/cryptopals.go index 3100115..1ae8c8d 100644 --- a/cryptopals.go +++ b/cryptopals.go @@ -42,5 +42,7 @@ func main() {  		challenge.C11()  	case 12:  		challenge.C12() +	case 13: +		challenge.C13()  	}  }  | 
