diff options
Diffstat (limited to 'vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java')
-rw-r--r-- | vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java b/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java new file mode 100644 index 000000000..51a5ee2e3 --- /dev/null +++ b/vid/src/main/java/org/openecomp/vid/encryption/EncryptConvertor.java @@ -0,0 +1,261 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.vid.encryption; + +import java.lang.Character; + +/** + * The Class EncryptConvertor. + */ +public class EncryptConvertor { + + /** The Constant HEX_CHARS. */ + private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray(); + + /** + * toHexString(String) - convert a string into its hex equivalent. + * + * @param buf the buf + * @return the string + */ + public final static String toHexString(String buf) { + if (buf == null) return ""; + return toHexString(buf.getBytes()); + } + + /** + * toHexString(byte[]) - convert a byte-string into its hex equivalent. + * + * @param buf the buf + * @return the string + */ + public final static String toHexString(byte[] buf) { + + if (buf == null) return ""; + char[] chars = new char[2 * buf.length]; + for (int i = 0; i < buf.length; ++i) { + chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4]; + chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F]; + } + return new String(chars); + } + + // alternate implementation that's slightly slower +// protected static final byte[] Hexhars = { +// '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' +// }; +// public static String encode(byte[] b) { +// StringBuilder s = new StringBuilder(2 * b.length); +// for (int i = 0; i < b.length; i++) { +// int v = b[i] & 0xff; +// s.append((char)Hexhars[v >> 4]); +// s.append((char)Hexhars[v & 0xf]); +// } +// return s.toString(); +// } + + /** + * Convert a hex string to its equivalent value. + * + * @param hexString the hex string + * @return the string + * @throws Exception the exception + */ + public final static String stringFromHex(String hexString) throws Exception + { + if (hexString == null) return ""; + return stringFromHex(hexString.toCharArray()); + } + + /** + * String from hex. + * + * @param hexCharArray the hex char array + * @return the string + * @throws Exception the exception + */ + public final static String stringFromHex(char[] hexCharArray) + throws Exception { + if (hexCharArray == null) return ""; + return new String(bytesFromHex(hexCharArray)); + } + + /** + * Bytes from hex. + * + * @param hexString the hex string + * @return the byte[] + * @throws Exception the exception + */ + public final static byte[] bytesFromHex(String hexString) throws Exception + { + if (hexString == null) return new byte[0]; + return bytesFromHex(hexString.toCharArray()); + } + + /** + * Bytes from hex. + * + * @param hexCharArray the hex char array + * @return the byte[] + * @throws Exception the exception + */ + public final static byte[] bytesFromHex(char[] hexCharArray) + throws Exception { + if (hexCharArray == null) return new byte[0]; + int len = hexCharArray.length; + if ((len % 2) != 0) throw new Exception("Odd number of characters: '" + String.valueOf(hexCharArray) + "'"); + byte [] txtInByte = new byte [len / 2]; + int j = 0; + for (int i = 0; i < len; i += 2) { + txtInByte[j++] = (byte)(((fromHexDigit(hexCharArray[i], i) << 4) | fromHexDigit(hexCharArray[i+1], i)) & 0xFF); + } + return txtInByte; + } + + /** + * From hex digit. + * + * @param ch the ch + * @param index the index + * @return the int + * @throws Exception the exception + */ + protected final static int fromHexDigit(char ch, int index) throws Exception + { + int digit = Character.digit(ch, 16); + if (digit == -1) throw new Exception("Illegal hex character '" + ch + "' at index " + index); + return digit; + } + + // UNIT TESTS (same junit, but we want to run from command line + + /** + * Check to hex string B. + * + * @param arg the arg + * @param expected the expected + * @return true, if successful + */ + public static boolean checkToHexStringB(String arg, String expected) { + String ret = toHexString(arg != null ? arg.getBytes() : null); + System.out.println("toHexString(" + arg + ")=> " + ret); + if (!ret.equals(expected)) System.out.println("\tWRONG, expected: " + expected); + return ret.equals(expected); + } + + /** + * Check to hex string. + * + * @param arg the arg + * @param expected the expected + * @return true, if successful + */ + public static boolean checkToHexString(String arg, String expected) { + String ret = toHexString(arg); + System.out.println("toHexString(" + arg + ")=> " + ret); + if (!ret.equals(expected)) System.out.println("\tWRONG, expected: " + expected); + return ret.equals(expected); + } + + /** + * Check from hex string. + * + * @param arg the arg + * @param expected the expected + * @return true, if successful + */ + public static boolean checkFromHexString(String arg, String expected) { + try { + String ret = stringFromHex(arg); + System.out.println("fromHexString(" + arg + ")=> " + ret); + if (!ret.equals(expected)) System.out.println("\tWRONG, expected: " + expected); + return ret.equals(expected); + } catch (Exception e) { + System.out.println("Caught exception: " + e.toString()); + return false; + } + } + + /** + * Check from hex string B. + * + * @param arg the arg + * @param expected the expected + * @return true, if successful + */ + public static boolean checkFromHexStringB(String arg, String expected) { + try { + byte[] ret = bytesFromHex(arg); + String sret = new String(ret); + System.out.println("fromHexString(" + arg + ")=> " + sret); + if (!sret.equals(expected)) System.out.println("\tWRONG, expected: " + expected); + return sret.equals(expected); + } catch (Exception e) { + System.out.println("Caught exception: " + e.toString()); + return false; + } + } + + + /** + * The main method. + * + * @param args the arguments + */ + public static void main(String[] args) { + // TODO Auto-generated method stub + int pass = 0, fail = 0; + if (checkToHexString("", "")) pass++; else fail++; + if (checkToHexString(null, "")) pass++; else fail++; + if (checkToHexString("0", "30")) pass++; else fail++; + if (checkToHexString("abc", "616263")) pass++; else fail++; + if (checkToHexString("!@#$%^&*()", "21402324255e262a2829")) pass++; else fail++; + if (checkToHexStringB("", "")) pass++; else fail++; + if (checkToHexStringB(null, "")) pass++; else fail++; + if (checkToHexStringB("0", "30")) pass++; else fail++; + if (checkToHexStringB("abc", "616263")) pass++; else fail++; + if (checkToHexStringB("!@#$%^&*()", "21402324255e262a2829")) pass++; else fail++; + if (checkFromHexString("", "")) pass++; else fail++; + if (checkFromHexString(null, "")) pass++; else fail++; + if (checkFromHexString("30", "0")) pass++; else fail++; + if (checkFromHexString("616263", "abc")) pass++; else fail++; + if (checkFromHexString("21402324255e262a2829", "!@#$%^&*()")) pass++; else fail++; + if (checkFromHexStringB("", "")) pass++; else fail++; + if (checkFromHexStringB(null, "")) pass++; else fail++; + if (checkFromHexStringB("30", "0")) pass++; else fail++; + if (checkFromHexStringB("616263", "abc")) pass++; else fail++; + if (checkFromHexStringB("21402324255e262a2829", "!@#$%^&*()")) pass++; else fail++; + System.out.println("Tests passed: " + Integer.toString(pass)); + System.out.println("Tests failed: " + Integer.toString(fail)); + System.out.println("======="); + System.out.println("abc toHex = " + toHexString("abc")); + System.out.println("123 toHex = " + toHexString("123")); + try { + System.out.println("616263 FromHex = " + stringFromHex("616263")); + System.out.println("313233 FromHex = " + stringFromHex("313233")); + //System.out.println("current key FromHex = " + stringFromHex("57ajqe{kJjjarj}G#(3)ea7")); + } catch (Exception e) { + System.out.println("exception: " + e.toString()); + } + } + +} |