Advertisement
Guest User

ServiceDesk Password Encoder

a guest
Jul 7th, 2011
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.52 KB | None | 0 0
  1.  
  2. import java.io.PrintStream;
  3.  
  4. public class Encoder
  5. {
  6.  
  7.     public Encoder()
  8.     {
  9.     }
  10.  
  11.     public static String convertToNewBase(String string)
  12.         throws Exception
  13.     {
  14.         if(string == null)
  15.             return null;
  16.         string = (new StringBuffer()).append(string).reverse().toString();
  17.         int bits[] = new int[string.length()];
  18.         StringBuffer whole = new StringBuffer();
  19.         for(int k = 0; k < string.length(); k++)
  20.         {
  21.             bits[k] = string.charAt(k) - 28;
  22.             StringBuffer temp3 = (new StringBuffer()).append(bits[k]);
  23.             if(temp3.length() > 2)
  24.             {
  25.                 String errStr = "WARNING : Password contains special characters which cannot be decrypted.";
  26.                 throw new Exception(errStr);
  27.             }
  28.             for(; temp3.length() < 2; temp3.insert(0, "0"));
  29.             whole.append(temp3.toString());
  30.         }
  31.  
  32.         string = whole.toString();
  33.         return baseConvertor(string);
  34.     }
  35.  
  36.     private static String baseConvertor(String name1)
  37.         throws Exception
  38.     {
  39.         StringBuffer encoded = new StringBuffer();
  40.         String base[] = new String[60];
  41.         base[0] = "0";
  42.         base[1] = "1";
  43.         base[2] = "2";
  44.         base[3] = "3";
  45.         base[4] = "4";
  46.         base[5] = "5";
  47.         base[6] = "6";
  48.         base[7] = "7";
  49.         base[8] = "8";
  50.         base[9] = "9";
  51.         base[10] = "a";
  52.         base[11] = "b";
  53.         base[12] = "c";
  54.         base[13] = "d";
  55.         base[14] = "e";
  56.         base[15] = "f";
  57.         base[16] = "g";
  58.         base[17] = "h";
  59.         base[18] = "i";
  60.         base[19] = "j";
  61.         base[20] = "k";
  62.         base[21] = "l";
  63.         base[22] = "m";
  64.         base[23] = "n";
  65.         base[24] = "o";
  66.         base[25] = "p";
  67.         base[26] = "q";
  68.         base[27] = "r";
  69.         base[28] = "s";
  70.         base[29] = "t";
  71.         base[30] = "u";
  72.         base[31] = "v";
  73.         base[32] = "w";
  74.         base[33] = "x";
  75.         base[34] = "y";
  76.         base[35] = "z";
  77.         base[36] = "A";
  78.         base[37] = "B";
  79.         base[38] = "C";
  80.         base[39] = "D";
  81.         base[40] = "E";
  82.         base[41] = "F";
  83.         base[42] = "G";
  84.         base[43] = "H";
  85.         base[43] = "I";
  86.         base[44] = "J";
  87.         base[45] = "K";
  88.         base[46] = "L";
  89.         base[47] = "M";
  90.         base[48] = "N";
  91.         base[49] = "O";
  92.         base[50] = "P";
  93.         base[51] = "Q";
  94.         base[52] = "R";
  95.         base[53] = "S";
  96.         base[54] = "T";
  97.         base[55] = "U";
  98.         base[56] = "V";
  99.         base[57] = "W";
  100.         base[58] = "X";
  101.         base[59] = "Y";
  102.         long quotient = 0L;
  103.         long reminder = 0L;
  104.         boolean check = false;
  105.         int k1 = 0;
  106.         String fame = new String(name1);
  107.         for(int j1 = 0; j1 < name1.length(); j1++)
  108.         {
  109.             fame = name1.substring(j1);
  110.             StringBuffer part = new StringBuffer();
  111.             int p = 0;
  112.             k1 = 0;
  113.             reminder = 0L;
  114.             for(; part.length() != 5 && k1 < fame.length(); k1++)
  115.             {
  116.                 String test = fame.substring(p, k1 + 1);
  117.                 if(test.equals("0"))
  118.                 {
  119.                     part.append("0");
  120.                     p++;
  121.                     continue;
  122.                 }
  123.                 quotient = Long.parseLong(test) / 60L;
  124.                 reminder = Long.parseLong(test) % 60L;
  125.                 StringBuffer elabtemp = new StringBuffer();
  126.                 if(quotient != 0L)
  127.                     elabtemp.append(quotient).toString();
  128.                 String elab = elabtemp.toString();
  129.                 StringBuffer temp1 = new StringBuffer();
  130.                 for(int q = 0; q < elab.length(); q++)
  131.                     if(elab.length() != q + 1 && !elab.substring(q, q + 1).equals("0") && Integer.parseInt(elab.substring(q, q + 2)) < 60)
  132.                     {
  133.                         temp1.append(base[Integer.parseInt(elab.substring(q, q + 2))]);
  134.                         q++;
  135.                     } else
  136.                     {
  137.                         temp1.append(Integer.parseInt(elab.substring(q, q + 1)));
  138.                     }
  139.  
  140.                 if(temp1.length() == 5 - part.length() || k1 == fame.length() - 1)
  141.                     part.append(temp1.toString());
  142.             }
  143.  
  144.             part.append(base[(int)reminder]);
  145.             encoded.append(part.toString());
  146.             j1 = (j1 + k1) - 1;
  147.         }
  148.  
  149.         String toBeReturned = encoded.toString();
  150.         for(int triplepos = 0; (triplepos = toBeReturned.indexOf("000")) != -1;)
  151.             toBeReturned = (new StringBuffer(toBeReturned)).replace(triplepos, triplepos + 3, "Z").toString();
  152.  
  153.         return toBeReturned;
  154.     }
  155.  
  156.     public static String convertFromBase(String encodedString)
  157.         throws Exception
  158.     {
  159.         if(encodedString == null)
  160.             return null;
  161.         encodedString = baseDeconvertor(encodedString);
  162.         StringBuffer temp2 = (new StringBuffer()).append(encodedString);
  163.         String strbits[] = new String[temp2.length() / 2];
  164.         int intbits[] = new int[temp2.length() / 2];
  165.         StringBuffer fin = new StringBuffer();
  166.         for(int k = 0; k < temp2.length() / 2; k++)
  167.         {
  168.             strbits[k] = temp2.toString().substring(2 * k, 2 * k + 2);
  169.             intbits[k] = Integer.parseInt(strbits[k]) + 28;
  170.             fin.append((char)intbits[k]);
  171.         }
  172.  
  173.         fin = (new StringBuffer()).append(fin).reverse();
  174.         return fin.toString();
  175.     }
  176.  
  177.     private static String baseDeconvertor(String input)
  178.         throws Exception
  179.     {
  180.         String base[] = new String[60];
  181.         base[0] = "0";
  182.         base[1] = "1";
  183.         base[2] = "2";
  184.         base[3] = "3";
  185.         base[4] = "4";
  186.         base[5] = "5";
  187.         base[6] = "6";
  188.         base[7] = "7";
  189.         base[8] = "8";
  190.         base[9] = "9";
  191.         base[10] = "a";
  192.         base[11] = "b";
  193.         base[12] = "c";
  194.         base[13] = "d";
  195.         base[14] = "e";
  196.         base[15] = "f";
  197.         base[16] = "g";
  198.         base[17] = "h";
  199.         base[18] = "i";
  200.         base[19] = "j";
  201.         base[20] = "k";
  202.         base[21] = "l";
  203.         base[22] = "m";
  204.         base[23] = "n";
  205.         base[24] = "o";
  206.         base[25] = "p";
  207.         base[26] = "q";
  208.         base[27] = "r";
  209.         base[28] = "s";
  210.         base[29] = "t";
  211.         base[30] = "u";
  212.         base[31] = "v";
  213.         base[32] = "w";
  214.         base[33] = "x";
  215.         base[34] = "y";
  216.         base[35] = "z";
  217.         base[36] = "A";
  218.         base[37] = "B";
  219.         base[38] = "C";
  220.         base[39] = "D";
  221.         base[40] = "E";
  222.         base[41] = "F";
  223.         base[42] = "G";
  224.         base[43] = "H";
  225.         base[43] = "I";
  226.         base[44] = "J";
  227.         base[45] = "K";
  228.         base[46] = "L";
  229.         base[47] = "M";
  230.         base[48] = "N";
  231.         base[49] = "O";
  232.         base[50] = "P";
  233.         base[51] = "Q";
  234.         base[52] = "R";
  235.         base[53] = "S";
  236.         base[54] = "T";
  237.         base[55] = "U";
  238.         base[56] = "V";
  239.         base[57] = "W";
  240.         base[58] = "X";
  241.         base[59] = "Y";
  242.         for(int Zpos = 0; (Zpos = input.indexOf("Z")) != -1;)
  243.         {
  244.             String temp1 = input.substring(0, Zpos);
  245.             String temp2 = input.substring(Zpos + 1);
  246.             input = temp1 + "000" + temp2;
  247.         }
  248.  
  249.         StringBuffer answer = new StringBuffer();
  250.         int k = 0;
  251.         long reminder = 0L;
  252.         for(int co = input.length() / 6; k < co; k++)
  253.         {
  254.             String part = input.substring(6 * k, 6 * k + 6);
  255.             StringBuffer partnum = new StringBuffer();
  256.             boolean startnum = false;
  257.             for(int i = 0; i < 5; i++)
  258.             {
  259.                 boolean isthere = false;
  260.                 for(int pos = 0; !isthere; pos++)
  261.                 {
  262.                     if(!part.substring(i, i + 1).equals(base[pos]))
  263.                         continue;
  264.                     isthere = true;
  265.                     partnum.append(pos);
  266.                     if(pos == 0)
  267.                     {
  268.                         if(!startnum)
  269.                             answer.append("0");
  270.                     } else
  271.                     {
  272.                         startnum = true;
  273.                     }
  274.                 }
  275.  
  276.             }
  277.  
  278.             boolean isthere = false;
  279.             for(int pos = 0; !isthere; pos++)
  280.                 if(part.substring(5).equals(base[pos]))
  281.                 {
  282.                     isthere = true;
  283.                     reminder = pos;
  284.                 }
  285.  
  286.             if(partnum.toString().equals("00000"))
  287.             {
  288.                 if(reminder != 0L)
  289.                 {
  290.                     String tempo = (new Long(reminder)).toString();
  291.                     String temp1 = answer.toString().substring(0, answer.length() - tempo.length());
  292.                     answer = (new StringBuffer(temp1)).append(tempo);
  293.                 }
  294.             } else
  295.             {
  296.                 answer.append(Long.parseLong(partnum.toString()) * 60L + reminder);
  297.             }
  298.         }
  299.  
  300.         if(input.length() % 6 != 0)
  301.         {
  302.             String end = input.substring(6 * k);
  303.             StringBuffer partnum = new StringBuffer();
  304.             if(end.length() > 1)
  305.             {
  306.                 int i = 0;
  307.                 boolean startnum = false;
  308.                 boolean isthere;
  309.                 for(i = 0; i < end.length() - 1; i++)
  310.                 {
  311.                     isthere = false;
  312.                     for(int pos = 0; !isthere; pos++)
  313.                     {
  314.                         if(!end.substring(i, i + 1).equals(base[pos]))
  315.                             continue;
  316.                         isthere = true;
  317.                         partnum.append(pos);
  318.                         if(pos == 0)
  319.                         {
  320.                             if(!startnum)
  321.                                 answer.append("0");
  322.                         } else
  323.                         {
  324.                             startnum = true;
  325.                         }
  326.                     }
  327.  
  328.                 }
  329.  
  330.                 isthere = false;
  331.                 for(int pos = 0; !isthere; pos++)
  332.                     if(end.substring(i).equals(base[pos]))
  333.                     {
  334.                         isthere = true;
  335.                         reminder = pos;
  336.                     }
  337.  
  338.                 answer.append(Long.parseLong(partnum.toString()) * 60L + reminder);
  339.             } else
  340.             {
  341.                 boolean isthere = false;
  342.                 for(int pos = 0; !isthere; pos++)
  343.                     if(end.equals(base[pos]))
  344.                     {
  345.                         isthere = true;
  346.                         reminder = pos;
  347.                     }
  348.  
  349.                 answer.append(reminder);
  350.             }
  351.         }
  352.         return answer.toString();
  353.     }
  354.  
  355.     public static void main(String args[])
  356.         throws Exception
  357.     {
  358.         System.out.println("To encode and decode");
  359.         if(args.length == 0)
  360.         {
  361.             System.out.println("Please provide string to convert.");
  362.             return;
  363.         } else
  364.         {
  365.             String encode = convertToNewBase(args[0]);
  366.             System.out.println((new StringBuilder()).append("Encoded string : ").append(encode).toString());
  367.             String decode = convertFromBase(args[0]);
  368.             System.out.println((new StringBuilder()).append("Decoded string : ").append(decode).toString());
  369.             return;
  370.         }
  371.     }
  372.  
  373.  
  374. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement