Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/flexstor/common/util/Encrypt.java


1   /*
2    * Encrypt.java
3    *
4    * Copyright $Date: 2003/08/11 02:22:31 $ FLEXSTOR.net Inc.
5    *
6    * This work is licensed for use and distribution under license terms found at
7    * http://www.flexstor.org/license.html
8    *
9    */
10  
11  package com.flexstor.common.util;
12  
13  /**
14   * Encrypts or Decrypts a string.
15   *
16   * Based on the Blustone Sapphire/Web class Sa.SaEncrypt
17   */
18  public class Encrypt
19  {
20      private static int thekey = 127;
21  
22      private static char getHexChar(int val)
23      {
24          int ival = val % 16;
25          switch (ival)
26          {
27          case 0:
28              return '0';
29  
30          case 1:
31              return '1';
32  
33          case 2:
34              return '2';
35  
36          case 3:
37              return '3';
38  
39          case 4:
40              return '4';
41  
42          case 5:
43              return '5';
44  
45          case 6:
46              return '6';
47  
48          case 7:
49              return '7';
50  
51          case 8:
52              return '8';
53  
54          case 9:
55              return '9';
56  
57          case 10:
58              return 'a';
59  
60          case 11:
61              return 'b';
62  
63          case 12:
64              return 'c';
65  
66          case 13:
67              return 'd';
68  
69          case 14:
70              return 'e';
71  
72          case 15:
73              return 'f';
74  
75          default:
76              return 'f';
77          }
78      }
79  
80      private static int getHexInt(char val)
81      {
82          switch (val)
83          {
84          case 48:
85              return 0;
86  
87          case 49:
88              return 1;
89  
90          case 50:
91              return 2;
92  
93          case 51:
94              return 3;
95  
96          case 52:
97              return 4;
98  
99          case 53:
100             return 5;
101 
102         case 54:
103             return 6;
104 
105         case 55:
106             return 7;
107 
108         case 56:
109             return 8;
110 
111         case 57:
112             return 9;
113 
114         case 97:
115             return 10;
116 
117         case 98:
118             return 11;
119 
120         case 99:
121             return 12;
122 
123         case 100:
124             return 13;
125 
126         case 101:
127             return 14;
128 
129         case 102:
130             return 15;
131 
132         default:
133             return 15;
134         }
135     }
136 
137    public static final String encrypt ( String str )
138    {
139         if (str == null || str.length() < 1)
140             return str;
141         StringBuffer sb = new StringBuffer(str);
142         int length = sb.length();
143         for (int i = 0; i < length; i++)
144         {
145             char ch = sb.charAt(i);
146             int temp = ch;
147             temp %= 256;
148             temp += 10 * i;
149             temp += thekey;
150             temp %= 256;
151             ch = (char)temp;
152             sb.setCharAt(i, ch);
153         }
154         int rlength = sb.length();
155         for (int i = 0; i < rlength / 2; i++)
156         {
157             char ch = sb.charAt(i);
158             sb.setCharAt(i, sb.charAt(rlength - i - 1));
159             sb.setCharAt(rlength - i - 1, ch);
160         }
161         StringBuffer hsb = new StringBuffer(2 * length);
162         for (int i = 0; i < length; i++)
163         {
164             char ch = sb.charAt(i);
165             int temp = ch;
166             temp %= 256;
167             int low = temp % 16;
168             int high = temp / 16;
169             char lch = getHexChar(low);
170             char hch = getHexChar(high);
171             hsb.append(hch);
172             hsb.append(lch);
173         }
174         return hsb.toString();
175    }
176 
177    public static final String decrypt ( String str )
178    {
179         if (str == null || str.length() < 1)
180             return str;
181         StringBuffer sb = new StringBuffer(str);
182         int length = sb.length();
183         StringBuffer hsb = new StringBuffer(length / 2);
184         for (int i = 0; i < length / 2; i++)
185         {
186             char hch = sb.charAt(2 * i);
187             char lch = sb.charAt(2 * i + 1);
188             int lint = getHexInt(lch);
189             int hint = getHexInt(hch);
190             int temp = lint + 16 * hint;
191             hsb.append((char)temp);
192         }
193         int rlength = hsb.length();
194         for (int i = 0; i < rlength / 2; i++)
195         {
196             char ch = hsb.charAt(i);
197             hsb.setCharAt(i, hsb.charAt(rlength - i - 1));
198             hsb.setCharAt(rlength - i - 1, ch);
199         }
200         length = hsb.length();
201         sb = new StringBuffer(length);
202         for (int i = 0; i < length; i++)
203         {
204             char ch = hsb.charAt(i);
205             int temp = ch;
206             temp %= 256;
207             temp -= thekey;
208             if (temp < 0)
209                 temp += 256;
210             temp -= 10 * i;
211             if (temp < 0)
212                 temp += 256;
213             if (temp < 0)
214                 temp += 256;
215             sb.append((char)temp);
216         }
217         return sb.toString();
218    }
219 }