Skip to content

Instantly share code, notes, and snippets.

@noisesmith
Created December 26, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noisesmith/561c215ffa39f71645b5 to your computer and use it in GitHub Desktop.
Save noisesmith/561c215ffa39f71645b5 to your computer and use it in GitHub Desktop.
base ;lkjfdsa encoding (a very "special" kind of steganography)
user>
(defn base-_SEMI_lkjfdsa-encode
[string]
(let [byte-form (.getBytes string "UTF-8")
encode (into [] ";lkjfdsa")
extract (fn [n pos] (bit-and (bit-shift-right n (* pos 3)) 7))]
(apply
str
(mapcat
(fn [[a b c]]
(let [n (+ a
(bit-shift-left (or b 0) 8)
(bit-shift-left (or c 0) 16))]
(map #(encode (extract n %)) (range 8))))
(partition-all 3 byte-form)))))
#'user/base-_SEMI_lkjfdsa-encode
user>
(defn base-_SEMI_lkjfdsa-decode
[string]
(let [decode (into {} (map-indexed #(vector %2 %) ";lkjfdsa"))
extract (fn [pos n] (bit-shift-left (decode n) (* 3 pos)))
raw (map
(fn [symbols] (apply + (map-indexed extract symbols)))
(partition 8 string))
unpack (fn [n]
[(bit-and n 127)
(bit-and (bit-shift-right n 8) 127)
(bit-and (bit-shift-right n 16) 127)])]
(apply str
(map char
(remove #{0}
(mapcat unpack raw))))))
#'user/base-_SEMI_lkjfdsa-decode
user> (base-_SEMI_lkjfdsa-encode "hello")
";ddks;jjfddas;;;"
user> (base-_SEMI_lkjfdsa-decode ";ddks;jjfddas;;;")
"hello"
user> (base-_SEMI_lkjfdsa-decode "dsdsadsdlksdkls;akdlaskd;laskd;lsak;ldksa;ldk;lsakd;lsakd;lksal;dksa;ldk;lsakdlsakd;laskd;lsakd;")
"u}:+Ws+H-\">JG*DW_EdT\b/FW[E|"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment