Skip to content

Instantly share code, notes, and snippets.

@pascalduez
Created June 15, 2014 19:53
Show Gist options
  • Save pascalduez/5d4d0c9542f2cc7a13ca to your computer and use it in GitHub Desktop.
Save pascalduez/5d4d0c9542f2cc7a13ca to your computer and use it in GitHub Desktop.
Generated by SassMeister.com.
// ----
// Sass (v3.3.8)
// Compass (v1.0.0.alpha.19)
// SassyBitwise (v1.1.2)
// ----
@import "SassyBitwise";
$ascii: (
32: " ", // (space)
33: "!",
34: '"',
35: "#",
36: "$",
37: "%",
38: "&",
39: "'",
40: "(",
41: ")",
42: "*",
43: "+",
44: ",",
45: "-",
46: ".",
47: "/",
48: "0",
49: "1",
50: "2",
51: "3",
52: "4",
53: "5",
54: "6",
55: "7",
56: "8",
57: "9",
58: ":",
59: ";",
60: "<",
61: "=",
62: ">",
63: "?",
64: "@",
65: "A",
66: "B",
67: "C",
68: "D",
69: "E",
70: "F",
71: "G",
72: "H",
73: "I",
74: "J",
75: "K",
76: "L",
77: "M",
78: "N",
79: "O",
80: "P",
81: "Q",
82: "R",
83: "S",
84: "T",
85: "U",
86: "V",
87: "W",
88: "X",
89: "Y",
90: "Z",
91: "[",
92: "\\",
93: "]",
94: "^",
95: "_",
96: "`",
97: "a",
98: "b",
99: "c",
100: "d",
101: "e",
102: "f",
103: "g",
104: "h",
105: "i",
106: "j",
107: "k",
108: "l",
109: "m",
110: "n",
111: "o",
112: "p",
113: "q",
114: "r",
115: "s",
116: "t",
117: "u",
118: "v",
119: "w",
120: "x",
121: "y",
122: "z",
123: "{",
124: "|",
125: "}",
126: "~"
);
@function backslash() {
@return str-slice('\\', -1);
}
@function ascii-char($code) {
@if $code == 92 {
@return backslash();
}
@return map-get($ascii, $code);
}
@function ascii-code($char) {
@if $char == backslash() {
@return 92;
}
@return map-search($ascii, $char);
}
// Searches the map for a given value
// and returns the corresponding key if successful.
// --------
// @param [map] $map
// @param [literal] $value
// --------
// @return [literal]
@function map-search($map, $value) {
$keys: map-keys($map);
$values: map-values($map);
$index: index($values, $value);
@if not $index {
@warn "No value found for '#{$value}' in map.";
@return false;
}
@return nth($keys, $index);
}
@function char-code-at($str, $index: 1) {
@return ascii-code(str-slice($str, $index, $index));
}
@function from-char-code($code) {
@return ascii-char($code);
}
@function key-char-at($key, $index) {
@return char-code-at($key, floor($index % str-length($key)));
}
@function xor-encrypt($message, $key) {
$result: ();
@for $i from 1 through str-length($message) {
$c: bw(char-code-at($message, $i) '^' key-char-at($key, $i));
$result: append($result, $c);
}
@return $result;
}
@function xor-decrypt($message, $key) {
$result: '';
@for $i from 1 through length($message) {
$c: bw(nth($message, $i) '^' key-char-at($key, $i));
$result: $result + from-char-code($c);
}
@return $result;
}
tests {
$e: xor-encrypt('Hallo Berlin !', 'abc');
e: $e;
d: xor-decrypt($e, 'abc');
}
tests {
e: 41 3 13 13 13 65 35 7 19 13 11 15 65 67;
d: "Hallo Berlin !";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment