Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.ignateff.stegotext;
- public class Encoder {
- private static char ZERO_SPACE = (char)65279;
- private String message;
- private int cipherSize;
- public Encoder(String plainText){
- message=plainText;
- cipherSize = 1+plainText.length();
- }
- public static boolean getBit(int input, int bit){
- if((input & (1 << bit)) != 0)return true;
- return false;
- }
- public static String getSecret(String message){
- char[] c = message.toCharArray();
- String cipher = "";
- int tmpChar = 0;
- int m = 0;
- for(int i=0; i<c.length; i++){
- if(c[i]!=ZERO_SPACE){
- tmpChar <<= 1;
- m++;
- }else{
- tmpChar |= 1;
- }
- if(m==5){
- if(tmpChar==0){return cipher;}
- tmpChar>>=1;
- cipher+=translateInt(tmpChar);
- tmpChar=0; m=0;
- }
- }
- return cipher;
- }
- public static int q(boolean b){
- if(b)return 1;
- return 0;
- }
- public String encodeSecret(String secret){
- int sLen = 5*secret.length();
- if(sLen > cipherSize){return "INVALID_CIPHER_SIZE";}
- boolean[] a = new boolean[sLen];
- char[] c = secret.toCharArray();
- char[] m = message.toCharArray();
- for(int i=0; i<c.length; i++){
- int x = translateChar(c[i]);
- if(x==-1)return "NOT_SUPPORTED_CHARACTER: " +c[i];
- a[i*5+0] = getBit(x, 4);
- a[i*5+1] = getBit(x, 3);
- a[i*5+2] = getBit(x, 2);
- a[i*5+3] = getBit(x, 1);
- a[i*5+4] = getBit(x, 0);
- }
- String r = "";
- if(a[0])r+=ZERO_SPACE;
- for(int i=0; i<m.length; i++){
- r+=m[i];
- if(i+1<a.length && a[i+1])r+=ZERO_SPACE;
- }
- return r;
- }
- public static char translateInt(int i){
- if(i > 0 && i<=26)return (char)(i+64);
- switch(i){
- case 27:
- return ' ';
- case 28:
- return '.';
- case 29:
- return ',';
- case 30:
- return '!';
- case 31:
- return '?';
- }
- return '#';
- }
- public static int translateChar(char c){
- if((int)c >= 65 && (int)c <=90){
- return (int)c-64;
- }
- if((int)c >= 97 && (int)c <=122){
- return (int)c-96;
- }
- switch(c){
- case ' ':
- return 27;
- case '.':
- return 28;
- case ',':
- return 29;
- case '!':
- return 30;
- case '?':
- return 31;
- }
- return -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement