public class BitString {
private static final int BITS = 5;
private int[] _bitString;
public BitString() {
setBitString(new int[BITS]);
}
/**
* Vorsicht.
* @param bits
*/
public BitString(int... bits){
setBitString(bits);
}
/**
* @param bitString
* the bitString to set
*/
public void setBitString(int... bitString) {
if (bitString.length == BITS) {
this._bitString = bitString;
} else {
// TODO
}
}
/**
* @return the bitString
*/
public int[] getBitString() {
return _bitString;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for(int i : _bitString){
sb.append(i);
}
return sb.toString();
}
public static Map createMapCrypt() {
Map<Character, BitString> map = new HashMap<Character, BitString>();
map.put(' ', new BitString(-1,-1,-1,-1,-1));
map.put('0', new BitString(-1,-1,-1,-1,0));
map.put('1', new BitString(-1,-1,-1,-1,1));
map.put('2', new BitString(-1,-1,-1,0,-1));
map.put('3', new BitString(-1,-1,-1,0,0));
map.put('4', new BitString(-1,-1,-1,0,1));
map.put('5', new BitString(-1,-1,-1,1,-1));
map.put('6', new BitString(-1,-1,-1,1,0));
map.put('7', new BitString(-1,-1,-1,1,1));
map.put('8', new BitString(-1,-1,0,-1,-1));
map.put('9', new BitString(-1,-1,0,-1,0));
map.put('a', new BitString(-1,-1,0,-1,1));
map.put('b', new BitString(-1,-1,0,0,-1));
map.put('c', new BitString(-1,-1,0,0,0));
map.put('d', new BitString(-1,-1,0,0,1));
map.put('e', new BitString(-1,-1,0,1,-1));
map.put('f', new BitString(-1,-1,0,1,0));
map.put('g', new BitString(-1,-1,0,1,1));
map.put('h', new BitString(-1,-1,1,-1,-1));
map.put('i', new BitString(-1,-1,1,-1,0));
map.put('j', new BitString(-1,-1,1,-1,1));
map.put('k', new BitString(-1,-1,1,0,-1));
map.put('l', new BitString(-1,-1,1,0,0));
map.put('m', new BitString(-1,-1,1,0,1));
map.put('n', new BitString(-1,-1,1,1,-1));
map.put('o', new BitString(-1,-1,1,1,0));
map.put('p', new BitString(-1,-1,1,1,1));
map.put('q', new BitString(-1,0,-1,-1,-1));
map.put('r', new BitString(-1,0,-1,-1,0));
map.put('s', new BitString(-1,0,-1,-1,1));
map.put('t', new BitString(-1,0,-1,0,-1));
map.put('u', new BitString(-1,0,-1,0,0));
map.put('v', new BitString(-1,0,-1,0,1));
map.put('w', new BitString(-1,0,-1,1,-1));
map.put('x', new BitString(-1,0,-1,1,0));
map.put('y', new BitString(-1,0,-1,1,1));
map.put('z', new BitString(-1,0,0,-1,-1));
map.put('A', new BitString(-1,0,0,-1,0));
map.put('B', new BitString(-1,0,0,-1,1));
map.put('C', new BitString(-1,0,0,0,-1));
map.put('D', new BitString(-1,0,0,0,0));
map.put('E', new BitString(-1,0,0,0,1));
map.put('F', new BitString(-1,0,0,1,-1));
map.put('G', new BitString(-1,0,0,1,0));
map.put('H', new BitString(-1,0,0,1,1));
map.put('I', new BitString(-1,0,1,-1,-1));
map.put('J', new BitString(-1,0,1,-1,0));
map.put('K', new BitString(-1,0,1,-1,1));
map.put('L', new BitString(-1,0,1,0,-1));
map.put('M', new BitString(-1,0,1,0,0));
map.put('N', new BitString(-1,0,1,0,1));
map.put('O', new BitString(-1,0,1,1,-1));
map.put('P', new BitString(-1,0,1,1,0));
map.put('Q', new BitString(-1,0,1,1,1));
map.put('R', new BitString(-1,1,-1,-1,-1));
map.put('S', new BitString(-1,1,-1,-1,0));
map.put('T', new BitString(-1,1,-1,-1,1));
map.put('U', new BitString(-1,1,-1,0,-1));
map.put('V', new BitString(-1,1,-1,0,0));
map.put('W', new BitString(-1,1,-1,0,1));
map.put('X', new BitString(-1,1,-1,1,-1));
map.put('Y', new BitString(-1,1,-1,1,0));
map.put('Z', new BitString(-1,1,-1,1,1));
map.put('^', new BitString(-1,1,0,-1,-1));
map.put('°', new BitString(-1,1,0,-1,0));
map.put('!', new BitString(-1,1,0,-1,1));
map.put('²', new BitString(-1,1,0,0,-1));
map.put('§', new BitString(-1,1,0,0,0));
map.put('³', new BitString(-1,1,0,0,1));
map.put('$', new BitString(-1,1,0,1,-1));
map.put('%', new BitString(-1,1,0,1,0));
map.put('&', new BitString(-1,1,0,1,1));
map.put('/', new BitString(-1,1,1,-1,-1));
map.put('{', new BitString(-1,1,1,-1,0));
map.put('(', new BitString(-1,1,1,-1,1));
map.put('[', new BitString(-1,1,1,0,-1));
map.put(')', new BitString(-1,1,1,0,0));
map.put(']', new BitString(-1,1,1,0,1));
map.put('=', new BitString(-1,1,1,1,-1));
map.put('}', new BitString(-1,1,1,1,0));
map.put('ß', new BitString(-1,1,1,1,1));
map.put('?', new BitString(0,-1,-1,-1,-1));
map.put('´', new BitString(0,-1,-1,-1,0));
map.put('`', new BitString(0,-1,-1,-1,1));
map.put('+', new BitString(0,-1,-1,0,-1));
map.put('*', new BitString(0,-1,-1,0,0));
map.put('~', new BitString(0,-1,-1,0,1));
map.put('#', new BitString(0,-1,-1,1,-1));
map.put('-', new BitString(0,-1,-1,1,1));
map.put('_', new BitString(0,-1,0,-1,-1));
map.put('.', new BitString(0,-1,0,-1,0));
map.put(':', new BitString(0,-1,0,-1,1));
map.put(',', new BitString(0,-1,0,0,-1));
map.put(';', new BitString(0,-1,0,0,0));
map.put('µ', new BitString(0,-1,0,0,1));
map.put('<', new BitString(0,-1,0,1,-1));
map.put('>', new BitString(0,-1,0,1,0));
map.put('|', new BitString(0,-1,0,1,1));
return map;
}
public static Map createMapDecrypt() {
Map<BitString, Character> map = new HashMap<BitString, Character>();
map.put(new BitString(-1,-1,-1,-1,-1), ' ');
map.put(new BitString(-1,-1,-1,-1,0),'0');
map.put(new BitString(-1,-1,-1,-1,1),'1');
map.put(new BitString(-1,-1,-1,0,-1),'2');
map.put(new BitString(-1,-1,-1,0,0),'3');
map.put(new BitString(-1,-1,-1,0,1),'4');
map.put(new BitString(-1,-1,-1,1,-1),'5');
map.put(new BitString(-1,-1,-1,1,0),'6');
map.put(new BitString(-1,-1,-1,1,1),'7');
map.put(new BitString(-1,-1,0,-1,-1),'8');
map.put(new BitString(-1,-1,0,-1,0),'9');
map.put(new BitString(-1,-1,0,-1,1),'a');
map.put(new BitString(-1,-1,0,0,-1),'b');
map.put(new BitString(-1,-1,0,0,0),'c');
map.put(new BitString(-1,-1,0,0,1),'d');
map.put(new BitString(-1,-1,0,1,-1),'e');
map.put(new BitString(-1,-1,0,1,0),'f');
map.put(new BitString(-1,-1,0,1,1),'g');
map.put(new BitString(-1,-1,1,-1,-1),'h');
map.put(new BitString(-1,-1,1,-1,0),'i');
map.put(new BitString(-1,-1,1,-1,1),'j');
map.put(new BitString(-1,-1,1,0,-1),'k');
map.put(new BitString(-1,-1,1,0,0),'l');
map.put(new BitString(-1,-1,1,0,1),'m');
map.put(new BitString(-1,-1,1,1,-1),'n');
map.put(new BitString(-1,-1,1,1,0),'o');
map.put(new BitString(-1,-1,1,1,1),'p');
map.put(new BitString(-1,0,-1,-1,-1),'q');
map.put(new BitString(-1,0,-1,-1,0),'r');
map.put(new BitString(-1,0,-1,-1,1),'s');
map.put(new BitString(-1,0,-1,0,-1),'t');
map.put(new BitString(-1,0,-1,0,0),'u');
map.put(new BitString(-1,0,-1,0,1),'v');
map.put(new BitString(-1,0,-1,1,-1),'w');
map.put(new BitString(-1,0,-1,1,0),'x');
map.put(new BitString(-1,0,-1,1,1),'y');
map.put(new BitString(-1,0,0,-1,-1),'z');
map.put(new BitString(-1,0,0,-1,0),'A');
map.put(new BitString(-1,0,0,-1,1),'B');
map.put(new BitString(-1,0,0,0,-1),'C');
map.put(new BitString(-1,0,0,0,0),'D');
map.put(new BitString(-1,0,0,0,1),'E');
map.put(new BitString(-1,0,0,1,-1),'F');
map.put(new BitString(-1,0,0,1,0),'G');
map.put(new BitString(-1,0,0,1,1),'H');
map.put(new BitString(-1,0,1,-1,-1),'I');
map.put(new BitString(-1,0,1,-1,0),'J');
map.put(new BitString(-1,0,1,-1,1),'K');
map.put(new BitString(-1,0,1,0,-1),'L');
map.put(new BitString(-1,0,1,0,0),'M');
map.put(new BitString(-1,0,1,0,1),'N');
map.put(new BitString(-1,0,1,1,-1),'O');
map.put(new BitString(-1,0,1,1,0),'P');
map.put(new BitString(-1,0,1,1,1),'Q');
map.put(new BitString(-1,1,-1,-1,-1),'R');
map.put(new BitString(-1,1,-1,-1,0),'S');
map.put(new BitString(-1,1,-1,-1,1),'T');
map.put(new BitString(-1,1,-1,0,-1),'U');
map.put(new BitString(-1,1,-1,0,0),'V');
map.put(new BitString(-1,1,-1,0,1),'W');
map.put(new BitString(-1,1,-1,1,-1),'X');
map.put(new BitString(-1,1,-1,1,0),'Y');
map.put(new BitString(-1,1,-1,1,1),'Z');
map.put(new BitString(-1,1,0,-1,-1),'^');
map.put(new BitString(-1,1,0,-1,0),'°');
map.put(new BitString(-1,1,0,-1,1),'!');
map.put(new BitString(-1,1,0,0,-1),'²');
map.put(new BitString(-1,1,0,0,0),'§');
map.put(new BitString(-1,1,0,0,1),'³');
map.put(new BitString(-1,1,0,1,-1),'$');
map.put(new BitString(-1,1,0,1,0),'%');
map.put(new BitString(-1,1,0,1,1),'&');
map.put(new BitString(-1,1,1,-1,-1),'/');
map.put(new BitString(-1,1,1,-1,0),'{');
map.put(new BitString(-1,1,1,-1,1),'(');
map.put(new BitString(-1,1,1,0,-1),'[');
map.put(new BitString(-1,1,1,0,0),')');
map.put(new BitString(-1,1,1,0,1),']');
map.put(new BitString(-1,1,1,1,-1),'=');
map.put(new BitString(-1,1,1,1,0),'}');
map.put(new BitString(-1,1,1,1,1),'ß');
map.put(new BitString(0,-1,-1,-1,-1),'?');
map.put(new BitString(0,-1,-1,-1,0),'´');
map.put(new BitString(0,-1,-1,-1,1),'`');
map.put(new BitString(0,-1,-1,0,-1),'+');
map.put(new BitString(0,-1,-1,0,0),'*');
map.put(new BitString(0,-1,-1,0,1),'~');
map.put(new BitString(0,-1,-1,1,-1),'#');
map.put(new BitString(0,-1,-1,1,1),'-');
map.put(new BitString(0,-1,0,-1,-1),'_');
map.put(new BitString(0,-1,0,-1,0),'.');
map.put(new BitString(0,-1,0,-1,1),':');
map.put(new BitString(0,-1,0,0,-1),',');
map.put(new BitString(0,-1,0,0,0),';');
map.put(new BitString(0,-1,0,0,1),'µ');
map.put(new BitString(0,-1,0,1,-1),'<');
map.put(new BitString(0,-1,0,1,0),'>');
map.put(new BitString(0,-1,0,1,1),'|');
return map;
}
}