Kotak Steganografis
Tugas Anda adalah mengambil string, dan menghasilkan NxNgambar yang mewakili string ini. Anda juga harus menulis algoritma yang mengambil gambar dan mengubahnya kembali menjadi string juga. Skor akan mencakup jumlah byte dari kedua algoritma:
Algoritma "Enkripsi" + Algoritma "Dekripsi" .
Anda harus memposting masing-masing secara terpisah, dengan byte-hitungan untuk kedua algoritma enkripsi dan dekripsi ditampilkan secara individual.
Contoh Algoritma
Misalnya, inilah "Programming Puzzles and Code Golf" menggunakan algoritme steganografi sederhana berbasis ASCII di saluran Biru:
#2e7250,#6ea972,#04eb6f,#0fc767,#74ab72,#ee6161
#b73b6d,#1aae6d,#f37169,#bda56e,#1fe367,#e99620
#706450,#0d3575,#146b7a,#4ea47a,#2a856c,#95d065
#3f2d73,#cef720,#bab661,#d1b86e,#f22564,#12b820
#0f3d43,#c86e6f,#1ee864,#a66565,#247c20,#c3bb47
#0e296f,#89d46c,#585b66,#c08f20,#455c20,#136f20
Anda dapat melihat saluran biru cukup memegang nilai ascii untuk gambar ini:
50 = 80(P) 72 = 114(r) 6f = 111(o) 67 = 103(g) 72 = 114(r) 61 = 97(a)
6d = 109(m) 6d = 109(m) 69 = 105(i) 6e = 110(n) 67 = 103(g) 20 = 32( )
50 = 80(P) 75 = 117(u) 7a = 122(z) 7a = 122(z) 6c = 108(l) 65 = 101(e)
73 = 115(s) 20 = 32( ) 61 = 97(a) 6e = 110(n) 64 = 100(d) 20 = 32( )
43 = 67(C) 6f = 111(o) 64 = 100(d) 65 = 101(e) 20 = 32( ) 47 = 71(G)
6f = 111(o) 6c = 108(l) 66 = 102(f) 20 = 32( ) 20 = 32( ) 20 = 32( )
Sementara saluran lainnya menyimpan nilai yang dihasilkan secara acak untuk "meningkatkan" variasi warna dalam gambar. Saat menarik pesan keluar dari gambar, kita bisa mengabaikan nilai saluran lainnya, dan menarik bit heks di saluran biru, merekonstruksi string:
"Programming Puzzles and Code Golf"
Perhatikan bahwa spasi yang digunakan untuk menempelkan string dalam kuadrat tidak termasuk dalam output dekripsi akhir. Meskipun Anda harus membuat string pada gambar, Anda dapat mengasumsikan bahwa string input tidak akan berakhir dengan spasi.
Aturan
- Anda harus menyandikan 1 karakter per piksel, saluran yang dipilih untuk menyandikan char adalah sewenang-wenang.
- Saluran dari warna RGB lainnya harus diacak, selain dari yang Anda pilih untuk menyandikan string; ini berarti saluran akhir tanpa kode Anda harus antara
0x0000-0xFFFF(dipilih secara acak). - Mengekspresikan hasil akhir sebagai array 2D nilai warna RGB baik-baik saja
0x000000-0xFFFFFF, tidak perlu menggunakan pembuatan gambar kecuali jika Anda ingin bersenang-senang dengannya atau jika kurang byte. Jika Anda memilih untuk menampilkan sebagai string hex, awali string hex dengan#EG#FFFFFFatau#05AB1E. Anda dapat memisahkan dengan tab, koma, atau apa pun yang akan masuk akal secara horizontal, tetapi harus mempertahankan pola kuadrat; dengan kata lain, Anda harus menggunakan pemisahan baris baru yang sesuai. - Outputnya harus dalam kotak, dan string harus diisi dengan spasi di ujungnya untuk mengakomodasi ini. Ini artinya
N≈SQRT(Input#Length()). Jika panjang input bukan kotak yang sempurna, Anda harus membulatkanNdan menempelkan spasi. - Seperti yang dinyatakan sebelumnya, jika Anda melapisi dengan spasi dalam gambar, Anda tidak harus memasukkan karakter empuk dalam output "dekripsi" akhir.
- Anda dapat mengasumsikan bahwa:
- String input tidak akan berakhir dengan spasi.
- String input hanya akan menggunakan karakter ASCII yang dapat dicetak.
- Ini adalah kode-golf , kemenangan jumlah byte terendah.







