1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package main import ( "fmt" "crypto/aes" "time" "rand" ) type Key128 [128]byte type Key256 [256]byte func padPhrase(k *Key128, b []byte) []byte { padded := make([]byte, len(k)) copy(padded, b) if len(padded) == len(k) { fmt.Println("\nKey successfully padded.") return padded } fmt.Println("Something happened!") return nil } func main() { phrase := "Hi my name is Sheridan." key := new(Key128) fmt.Println("Created key of length", len(key)) fmt.Println("Seeding randomization...") fmt.Println("NOTICE: This randomization is not top-notch security as it must run in a sandbox.") rand.Seed(time.Nanoseconds()) fmt.Println("Randomization seeded.") fmt.Println("Generating", len(key), "random bytes for key.") for i := 0; i < len(key); i++ { key[i] = byte(rand.Int()%255) } fmt.Println("\nKey created.") fmt.Printf(">> ") for b := 0; b < len(key); b++ { fmt.Printf("%x", key[b]) } fmt.Printf("\n\n") fmt.Println("Phrase to encrypt:", phrase) bphrase := make([]byte, len(phrase)) for b := 0; b < len(bphrase); b++ { bphrase[b] = byte(phrase[b]) } fmt.Println("Phrase bytes:", bphrase) fmt.Println("Phrase length:", len(bphrase)) if len(bphrase) < len(key) { fmt.Println("Phrase needs to be padded to fit key length.") bphrase = padPhrase(key, bphrase) } else { fmt.Println("Coincidentally, the phrase is just the right size for the key.") } fmt.Println("Length of new bphrase:", len(bphrase)) fmt.Println("Bphrase:", bphrase) cipher, err := aes.NewCipher(key) if err != nil { fmt.Println("Error in NewCipher():", err) } ephrase := make([]byte, len(bphrase)) if len(key) == 128 { cipher.Encrypt(bphrase[0:16], ephrase[0:16]) cipher.Encrypt(bphrase[16:32], ephrase[16:32]) cipher.Encrypt(bphrase[32:64], ephrase[32:64]) cipher.Encrypt(bphrase[64:96], ephrase[64:96]) cipher.Encrypt(bphrase[96:128], ephrase[96:128]) } fmt.Println("Bphrase encrypted in 128bit AES!") fmt.Println("Ephrase:", ephrase) fmt.Println("\n\nThis will be a 128-bit and 256-bit AES encryption algorithm when I'm done.") } |
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJjcnlwdG8vYWVzIgoJInRpbWUiCgkicmFuZCIKKQoKdHlwZSBLZXkxMjggWzEyOF1ieXRlCnR5cGUgS2V5MjU2IFsyNTZdYnl0ZQoKZnVuYyBwYWRQaHJhc2UoayAqS2V5MTI4LCBiIFtdYnl0ZSkgW11ieXRlIHsKCXBhZGRlZCA6PSBtYWtlKFtdYnl0ZSwgbGVuKGspKQoJY29weShwYWRkZWQsIGIpCgoJaWYgbGVuKHBhZGRlZCkgPT0gbGVuKGspIHsKCQlmbXQuUHJpbnRsbigiXG5LZXkgc3VjY2Vzc2Z1bGx5IHBhZGRlZC4iKQoJCXJldHVybiBwYWRkZWQKCX0KCQoJZm10LlByaW50bG4oIlNvbWV0aGluZyBoYXBwZW5lZCEiKQoJcmV0dXJuIG5pbAp9CgpmdW5jIG1haW4oKSB7CglwaHJhc2UgOj0gIkhpIG15IG5hbWUgaXMgU2hlcmlkYW4uIgoJa2V5IDo9IG5ldyhLZXkxMjgpCglmbXQuUHJpbnRsbigiQ3JlYXRlZCBrZXkgb2YgbGVuZ3RoIiwgbGVuKGtleSkpCglmbXQuUHJpbnRsbigiU2VlZGluZyByYW5kb21pemF0aW9uLi4uIikKCWZtdC5QcmludGxuKCJOT1RJQ0U6IFRoaXMgcmFuZG9taXphdGlvbiBpcyBub3QgdG9wLW5vdGNoIHNlY3VyaXR5IGFzIGl0IG11c3QgcnVuIGluIGEgc2FuZGJveC4iKQoJcmFuZC5TZWVkKHRpbWUuTmFub3NlY29uZHMoKSkKCWZtdC5QcmludGxuKCJSYW5kb21pemF0aW9uIHNlZWRlZC4iKQoJZm10LlByaW50bG4oIkdlbmVyYXRpbmciLCBsZW4oa2V5KSwgInJhbmRvbSBieXRlcyBmb3Iga2V5LiIpCglmb3IgaSA6PSAwOyBpIDwgbGVuKGtleSk7IGkrKyB7CgkJa2V5W2ldID0gYnl0ZShyYW5kLkludCgpJTI1NSkKCX0KCWZtdC5QcmludGxuKCJcbktleSBjcmVhdGVkLiIpCglmbXQuUHJpbnRmKCI+PiAiKQoJZm9yIGIgOj0gMDsgYiA8IGxlbihrZXkpOyBiKysgewoJCWZtdC5QcmludGYoIiV4Iiwga2V5W2JdKQoJfQoJZm10LlByaW50ZigiXG5cbiIpCglmbXQuUHJpbnRsbigiUGhyYXNlIHRvIGVuY3J5cHQ6IiwgcGhyYXNlKQoJYnBocmFzZSA6PSBtYWtlKFtdYnl0ZSwgbGVuKHBocmFzZSkpCglmb3IgYiA6PSAwOyBiIDwgbGVuKGJwaHJhc2UpOyBiKysgewoJCWJwaHJhc2VbYl0gPSBieXRlKHBocmFzZVtiXSkKCX0KCWZtdC5QcmludGxuKCJQaHJhc2UgYnl0ZXM6IiwgYnBocmFzZSkKCWZtdC5QcmludGxuKCJQaHJhc2UgbGVuZ3RoOiIsIGxlbihicGhyYXNlKSkKCWlmIGxlbihicGhyYXNlKSA8IGxlbihrZXkpIHsKCQlmbXQuUHJpbnRsbigiUGhyYXNlIG5lZWRzIHRvIGJlIHBhZGRlZCB0byBmaXQga2V5IGxlbmd0aC4iKQoJCWJwaHJhc2UgPSBwYWRQaHJhc2Uoa2V5LCBicGhyYXNlKQoJfSBlbHNlIHsKCQlmbXQuUHJpbnRsbigiQ29pbmNpZGVudGFsbHksIHRoZSBwaHJhc2UgaXMganVzdCB0aGUgcmlnaHQgc2l6ZSBmb3IgdGhlIGtleS4iKQoJfQoJZm10LlByaW50bG4oIkxlbmd0aCBvZiBuZXcgYnBocmFzZToiLCBsZW4oYnBocmFzZSkpCglmbXQuUHJpbnRsbigiQnBocmFzZToiLCBicGhyYXNlKQoJCgljaXBoZXIsIGVyciA6PSBhZXMuTmV3Q2lwaGVyKGtleSkKCWlmIGVyciAhPSBuaWwgewoJCWZtdC5QcmludGxuKCJFcnJvciBpbiBOZXdDaXBoZXIoKToiLCBlcnIpCgl9CgkKCWVwaHJhc2UgOj0gbWFrZShbXWJ5dGUsIGxlbihicGhyYXNlKSkKCWlmIGxlbihrZXkpID09IDEyOCB7CgkJY2lwaGVyLkVuY3J5cHQoYnBocmFzZVswOjE2XSwgZXBocmFzZVswOjE2XSkKCQljaXBoZXIuRW5jcnlwdChicGhyYXNlWzE2OjMyXSwgZXBocmFzZVsxNjozMl0pCgkJY2lwaGVyLkVuY3J5cHQoYnBocmFzZVszMjo2NF0sIGVwaHJhc2VbMzI6NjRdKQoJCWNpcGhlci5FbmNyeXB0KGJwaHJhc2VbNjQ6OTZdLCBlcGhyYXNlWzY0Ojk2XSkKCQljaXBoZXIuRW5jcnlwdChicGhyYXNlWzk2OjEyOF0sIGVwaHJhc2VbOTY6MTI4XSkKCX0KCWZtdC5QcmludGxuKCJCcGhyYXNlIGVuY3J5cHRlZCBpbiAxMjhiaXQgQUVTISIpCglmbXQuUHJpbnRsbigiRXBocmFzZToiLCBlcGhyYXNlKQoJCglmbXQuUHJpbnRsbigiXG5cblRoaXMgd2lsbCBiZSBhIDEyOC1iaXQgYW5kIDI1Ni1iaXQgQUVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIHdoZW4gSSdtIGRvbmUuIikKfQo=
-
upload with new input
-
result: Success time: 0s memory: 2520 kB returned value: 2
Created key of length 128 Seeding randomization... NOTICE: This randomization is not top-notch security as it must run in a sandbox. Randomization seeded. Generating 128 random bytes for key. Key created. >> 6d4db87ac196cb73b82ce781dec983dc1d1097b3aedf38533a218e9c70634382f1ab9df3d7bd520434225798fb94edac94e713a9d2bc88ba57f32b42b7712a1f0cf9e457f27b32baf4edc40a7c19a1a4489d5fc55e65f5adc3579eaf55874ad4b71aedbccb3c7642f77db1911552e5841536462f6cb0f4c04b74e8c3 Phrase to encrypt: Hi my name is Sheridan. Phrase bytes: [72 105 32 109 121 32 110 97 109 101 32 105 115 32 83 104 101 114 105 100 97 110 46] Phrase length: 23 Phrase needs to be padded to fit key length. Key successfully padded. Length of new bphrase: 128 Bphrase: [72 105 32 109 121 32 110 97 109 101 32 105 115 32 83 104 101 114 105 100 97 110 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] Error in NewCipher(): crypto/aes: invalid key size 128
panic: runtime error: invalid memory address or nil pointer dereference panic PC=0xb7756a5c runtime.panic+0x97 /usr/local/devel/pakiety/go/src/src/pkg/runtime/proc.c:1012 runtime.panic(0x0, 0x80980a4) panicstring+0x5e /usr/local/devel/pakiety/go/src/src/pkg/runtime/runtime.c:83 panicstring(0x80980a4, 0xb776d1c8) sigpanic+0x8f /usr/local/devel/pakiety/go/src/src/pkg/runtime/linux/thread.c:285 sigpanic() crypto/aes.*Cipher·Encrypt+0x22 /usr/local/devel/pakiety/go/src/src/pkg/crypto/aes/cipher.go:56 crypto/aes.*Cipher·Encrypt(0x8057a39, 0xb776a3e0, 0xb776a0a0, 0x9, 0x804a524, ...) main.main+0xd94 /home/QvJBYB/prog.go:67 main.main() mainstart+0xf /usr/local/devel/pakiety/go/src/src/pkg/runtime/386/asm.s:83 mainstart() goexit /usr/local/devel/pakiety/go/src/src/pkg/runtime/proc.c:145 goexit()



