From 0757abde108a039b8ed867132300a87c8cd4d58d Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sun, 13 Dec 2020 10:35:29 -0500 Subject: lib/aes: add OracleAESEncryptECB --- lib/oracle.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/oracle.go b/lib/oracle.go index a77793a..47d850c 100644 --- a/lib/oracle.go +++ b/lib/oracle.go @@ -8,6 +8,20 @@ import ( "math/big" ) +var oracleUnknown string = `Um9sbGluJyBpbiBteSA1LjAKV2l0aCBteSByYWctdG9wIGRvd24gc28gbXkg +aGFpciBjYW4gYmxvdwpUaGUgZ2lybGllcyBvbiBzdGFuZGJ5IHdhdmluZyBq +dXN0IHRvIHNheSBoaQpEaWQgeW91IHN0b3A/IE5vLCBJIGp1c3QgZHJvdmUg +YnkK` + +var oracleKey []byte = make([]byte, 16) + +func init() { + _, err := rand.Read(oracleKey) + if err != nil { + panic(err) + } +} + // Given an input `in`, this function AES encrypts `in` using a // randomly generate 16-byte key using ECB or CBC mode and returns the // cipher. @@ -45,6 +59,10 @@ func OracleAESRandomEncrypt(in []byte) []byte { return out } +func OracleAESEncryptECB(in []byte) []byte { + return AESEncryptECB(append(in, Base64ToBytes(oracleUnknown)...), oracleKey) +} + // Randomly generates `min` to `max` bytes. func randomBytes(min, max int64) []byte { var rn *big.Int -- cgit v1.2.3