/flexodesktop/externalmodels/flexojavacvs/src/main/java/org/netbeans/lib/cvsclient/connection/StandardScrambler.java

https://github.com/bluepimento/openflexo · Java · 304 lines · 254 code · 8 blank · 42 comment · 6 complexity · 5a1ba2dc54c2198379175c228fc6bf15 MD5 · raw file

  1. /*
  2. * (c) Copyright 2010-2011 AgileBirds
  3. *
  4. * This file is part of OpenFlexo.
  5. *
  6. * OpenFlexo is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * OpenFlexo is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
  18. *
  19. */
  20. package org.netbeans.lib.cvsclient.connection;
  21. /**
  22. * Scrambles text (the password) using the standard scheme described in the CVS protocol version 1.10. This encoding is trivial and should
  23. * not be used for security, but rather as a mechanism for avoiding inadvertant compromise.
  24. *
  25. * @author Robert Greig
  26. */
  27. public class StandardScrambler implements Scrambler {
  28. /**
  29. * The mapping array
  30. */
  31. private int[] shifts;
  32. /**
  33. * The single instance of this class (Singleton design pattern)
  34. */
  35. public static StandardScrambler instance;
  36. /**
  37. * Do not instantiate the scrambler directly. Use the getInstance() method
  38. */
  39. private StandardScrambler() {
  40. int i;
  41. shifts = new int[256];
  42. for (i = 0; i < 32; ++i) {
  43. shifts[i] = i;
  44. }
  45. shifts[i++] = 114;
  46. shifts[i++] = 120;
  47. shifts[i++] = 53;
  48. shifts[i++] = 79;
  49. shifts[i++] = 96;
  50. shifts[i++] = 109;
  51. shifts[i++] = 72;
  52. shifts[i++] = 108;
  53. shifts[i++] = 70;
  54. shifts[i++] = 64;
  55. shifts[i++] = 76;
  56. shifts[i++] = 67;
  57. shifts[i++] = 116;
  58. shifts[i++] = 74;
  59. shifts[i++] = 68;
  60. shifts[i++] = 87;
  61. shifts[i++] = 111;
  62. shifts[i++] = 52;
  63. shifts[i++] = 75;
  64. shifts[i++] = 119;
  65. shifts[i++] = 49;
  66. shifts[i++] = 34;
  67. shifts[i++] = 82;
  68. shifts[i++] = 81;
  69. shifts[i++] = 95;
  70. shifts[i++] = 65;
  71. shifts[i++] = 112;
  72. shifts[i++] = 86;
  73. shifts[i++] = 118;
  74. shifts[i++] = 110;
  75. shifts[i++] = 122;
  76. shifts[i++] = 105;
  77. shifts[i++] = 41;
  78. shifts[i++] = 57;
  79. shifts[i++] = 83;
  80. shifts[i++] = 43;
  81. shifts[i++] = 46;
  82. shifts[i++] = 102;
  83. shifts[i++] = 40;
  84. shifts[i++] = 89;
  85. shifts[i++] = 38;
  86. shifts[i++] = 103;
  87. shifts[i++] = 45;
  88. shifts[i++] = 50;
  89. shifts[i++] = 42;
  90. shifts[i++] = 123;
  91. shifts[i++] = 91;
  92. shifts[i++] = 35;
  93. shifts[i++] = 125;
  94. shifts[i++] = 55;
  95. shifts[i++] = 54;
  96. shifts[i++] = 66;
  97. shifts[i++] = 124;
  98. shifts[i++] = 126;
  99. shifts[i++] = 59;
  100. shifts[i++] = 47;
  101. shifts[i++] = 92;
  102. shifts[i++] = 71;
  103. shifts[i++] = 115;
  104. shifts[i++] = 78;
  105. shifts[i++] = 88;
  106. shifts[i++] = 107;
  107. shifts[i++] = 106;
  108. shifts[i++] = 56;
  109. shifts[i++] = 36;
  110. shifts[i++] = 121;
  111. shifts[i++] = 117;
  112. shifts[i++] = 104;
  113. shifts[i++] = 101;
  114. shifts[i++] = 100;
  115. shifts[i++] = 69;
  116. shifts[i++] = 73;
  117. shifts[i++] = 99;
  118. shifts[i++] = 63;
  119. shifts[i++] = 94;
  120. shifts[i++] = 93;
  121. shifts[i++] = 39;
  122. shifts[i++] = 37;
  123. shifts[i++] = 61;
  124. shifts[i++] = 48;
  125. shifts[i++] = 58;
  126. shifts[i++] = 113;
  127. shifts[i++] = 32;
  128. shifts[i++] = 90;
  129. shifts[i++] = 44;
  130. shifts[i++] = 98;
  131. shifts[i++] = 60;
  132. shifts[i++] = 51;
  133. shifts[i++] = 33;
  134. shifts[i++] = 97;
  135. shifts[i++] = 62;
  136. shifts[i++] = 77;
  137. shifts[i++] = 84;
  138. shifts[i++] = 80;
  139. shifts[i++] = 85;
  140. shifts[i++] = 223;
  141. shifts[i++] = 225;
  142. shifts[i++] = 216;
  143. shifts[i++] = 187;
  144. shifts[i++] = 166;
  145. shifts[i++] = 229;
  146. shifts[i++] = 189;
  147. shifts[i++] = 222;
  148. shifts[i++] = 188;
  149. shifts[i++] = 141;
  150. shifts[i++] = 249;
  151. shifts[i++] = 148;
  152. shifts[i++] = 200;
  153. shifts[i++] = 184;
  154. shifts[i++] = 136;
  155. shifts[i++] = 248;
  156. shifts[i++] = 190;
  157. shifts[i++] = 199;
  158. shifts[i++] = 170;
  159. shifts[i++] = 181;
  160. shifts[i++] = 204;
  161. shifts[i++] = 138;
  162. shifts[i++] = 232;
  163. shifts[i++] = 218;
  164. shifts[i++] = 183;
  165. shifts[i++] = 255;
  166. shifts[i++] = 234;
  167. shifts[i++] = 220;
  168. shifts[i++] = 247;
  169. shifts[i++] = 213;
  170. shifts[i++] = 203;
  171. shifts[i++] = 226;
  172. shifts[i++] = 193;
  173. shifts[i++] = 174;
  174. shifts[i++] = 172;
  175. shifts[i++] = 228;
  176. shifts[i++] = 252;
  177. shifts[i++] = 217;
  178. shifts[i++] = 201;
  179. shifts[i++] = 131;
  180. shifts[i++] = 230;
  181. shifts[i++] = 197;
  182. shifts[i++] = 211;
  183. shifts[i++] = 145;
  184. shifts[i++] = 238;
  185. shifts[i++] = 161;
  186. shifts[i++] = 179;
  187. shifts[i++] = 160;
  188. shifts[i++] = 212;
  189. shifts[i++] = 207;
  190. shifts[i++] = 221;
  191. shifts[i++] = 254;
  192. shifts[i++] = 173;
  193. shifts[i++] = 202;
  194. shifts[i++] = 146;
  195. shifts[i++] = 224;
  196. shifts[i++] = 151;
  197. shifts[i++] = 140;
  198. shifts[i++] = 196;
  199. shifts[i++] = 205;
  200. shifts[i++] = 130;
  201. shifts[i++] = 135;
  202. shifts[i++] = 133;
  203. shifts[i++] = 143;
  204. shifts[i++] = 246;
  205. shifts[i++] = 192;
  206. shifts[i++] = 159;
  207. shifts[i++] = 244;
  208. shifts[i++] = 239;
  209. shifts[i++] = 185;
  210. shifts[i++] = 168;
  211. shifts[i++] = 215;
  212. shifts[i++] = 144;
  213. shifts[i++] = 139;
  214. shifts[i++] = 165;
  215. shifts[i++] = 180;
  216. shifts[i++] = 157;
  217. shifts[i++] = 147;
  218. shifts[i++] = 186;
  219. shifts[i++] = 214;
  220. shifts[i++] = 176;
  221. shifts[i++] = 227;
  222. shifts[i++] = 231;
  223. shifts[i++] = 219;
  224. shifts[i++] = 169;
  225. shifts[i++] = 175;
  226. shifts[i++] = 156;
  227. shifts[i++] = 206;
  228. shifts[i++] = 198;
  229. shifts[i++] = 129;
  230. shifts[i++] = 164;
  231. shifts[i++] = 150;
  232. shifts[i++] = 210;
  233. shifts[i++] = 154;
  234. shifts[i++] = 177;
  235. shifts[i++] = 134;
  236. shifts[i++] = 127;
  237. shifts[i++] = 182;
  238. shifts[i++] = 128;
  239. shifts[i++] = 158;
  240. shifts[i++] = 208;
  241. shifts[i++] = 162;
  242. shifts[i++] = 132;
  243. shifts[i++] = 167;
  244. shifts[i++] = 209;
  245. shifts[i++] = 149;
  246. shifts[i++] = 241;
  247. shifts[i++] = 153;
  248. shifts[i++] = 251;
  249. shifts[i++] = 237;
  250. shifts[i++] = 236;
  251. shifts[i++] = 171;
  252. shifts[i++] = 195;
  253. shifts[i++] = 243;
  254. shifts[i++] = 233;
  255. shifts[i++] = 253;
  256. shifts[i++] = 240;
  257. shifts[i++] = 194;
  258. shifts[i++] = 250;
  259. shifts[i++] = 191;
  260. shifts[i++] = 155;
  261. shifts[i++] = 142;
  262. shifts[i++] = 137;
  263. shifts[i++] = 245;
  264. shifts[i++] = 235;
  265. shifts[i++] = 163;
  266. shifts[i++] = 242;
  267. shifts[i++] = 178;
  268. shifts[i++] = 152;
  269. }
  270. /**
  271. * Get an instance of the standard scrambler
  272. */
  273. public static Scrambler getInstance() {
  274. if (instance == null) {
  275. instance = new StandardScrambler();
  276. }
  277. return instance;
  278. }
  279. /**
  280. * Scramble text, turning it into a String of scrambled data
  281. *
  282. * @return a String of scrambled data
  283. */
  284. @Override
  285. public String scramble(String text) {
  286. StringBuffer buf = new StringBuffer("A"); // NOI18N
  287. if (text != null) {
  288. for (int i = 0; i < text.length(); ++i) {
  289. char ch = text.charAt(i);
  290. byte newCh = (byte) (shifts[ch & 255] & 255);
  291. buf.append((char) newCh);
  292. }
  293. }
  294. return buf.toString();
  295. }
  296. }