X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2FHash.java;h=3827aed0231153ca3f12821d55b369f258a9b4f0;hb=HEAD;hp=acd45019c87e1b6d5f5611669fedbb7bfae1971e;hpb=4b5a7d721d994a49057e9bfb403c7bff1b376660;p=aaf%2Fauthz.git diff --git a/cadi/core/src/main/java/org/onap/aaf/cadi/Hash.java b/cadi/core/src/main/java/org/onap/aaf/cadi/Hash.java index acd45019..3827aed0 100644 --- a/cadi/core/src/main/java/org/onap/aaf/cadi/Hash.java +++ b/cadi/core/src/main/java/org/onap/aaf/cadi/Hash.java @@ -7,9 +7,9 @@ * 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. @@ -25,9 +25,15 @@ import java.nio.ByteBuffer; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +/** + * + * + * @author Jonathan + * + */ public class Hash { private static char hexDigit[] = "0123456789abcdef".toCharArray(); - + ///////////////////////////////// // MD5 ///////////////////////////////// @@ -38,9 +44,9 @@ public class Hash { * @throws NoSuchAlgorithmException */ public static byte[] hashMD5 (byte[] input) throws NoSuchAlgorithmException { - // Note: Protect against Multi-thread issues with new MessageDigest + // Note: Protect against Multi-thread issues with new MessageDigest MessageDigest md = MessageDigest.getInstance("MD5"); - md.update(input); + md.update(input); return md.digest(); } @@ -51,17 +57,17 @@ public class Hash { * @throws NoSuchAlgorithmException */ public static byte[] hashMD5 (byte[] input, int offset, int length) throws NoSuchAlgorithmException { - // Note: Protect against Multi-thread issues with new MessageDigest + // Note: Protect against Multi-thread issues with new MessageDigest MessageDigest md = MessageDigest.getInstance("MD5"); - md.update(input,offset,length); + md.update(input,offset,length); return md.digest(); } /** - * Convenience Function: Encrypt MD5 from String to String Hex representation - * + * Convenience Function: Encrypt MD5 from String to String Hex representation + * * @param input * @return * @throws NoSuchAlgorithmException @@ -83,9 +89,9 @@ public class Hash { * SHA256 Hashing */ public static byte[] hashSHA256(byte[] input) throws NoSuchAlgorithmException { - // Note: Protect against Multi-thread issues with new MessageDigest + // Note: Protect against Multi-thread issues with new MessageDigest MessageDigest md = MessageDigest.getInstance("SHA-256"); - md.update(input); + md.update(input); return md.digest(); } @@ -93,15 +99,15 @@ public class Hash { * SHA256 Hashing */ public static byte[] hashSHA256(byte[] input, int offset, int length) throws NoSuchAlgorithmException { - // Note: Protect against Multi-thread issues with new MessageDigest + // Note: Protect against Multi-thread issues with new MessageDigest MessageDigest md = MessageDigest.getInstance("SHA-256"); - md.update(input,offset,length); + md.update(input,offset,length); return md.digest(); } - + /** * Convenience Function: Hash from String to String Hex representation - * + * * @param input * @return * @throws NoSuchAlgorithmException @@ -112,7 +118,7 @@ public class Hash { /** * Convenience Function: Hash from String to String Hex representation - * + * * @param input * @return * @throws NoSuchAlgorithmException @@ -124,7 +130,7 @@ public class Hash { bb.put(input.getBytes()); return toHex(Hash.hashSHA256(bb.array())); } - + /** * Compare two byte arrays for equivalency * @param ba1 @@ -132,9 +138,9 @@ public class Hash { * @return */ public static boolean isEqual(byte ba1[], byte ba2[]) { - if(ba1.length!=ba2.length)return false; - for(int i = 0;i=0x30 && c<=0x39) { + if (c>=0x30 && c<=0x39) { b=(byte)(c-0x30); - } else if(c>=0x61 && c<=0x66) { + } else if (c>=0x61 && c<=0x66) { b=(byte)(c-0x57); // account for "A" - } else if(c>=0x41 && c<=0x46) { + } else if (c>=0x41 && c<=0x46) { b=(byte)(c-0x37); } else { - throw new CadiException("Invalid char '" + c + "' in HexString"); + return null; } - idx = (i-2)/2; - if(high) { + idx = (i-2+extra)/2; + if (high) { ba[idx]=(byte)(b<<4); high = false; } else { @@ -208,43 +225,36 @@ public class Hash { } return ba; } - + /** * Does not expect to start with "0x" * if Any Character doesn't match, it returns null; - * + * * @param s * @return */ public static byte[] fromHexNo0x(String s) { - int c; byte b; + int c; byte[] ba; - boolean high; - int start; - if(s.length()%2==0) { - ba = new byte[s.length()/2]; - high=true; - start=0; - } else { - ba = new byte[(s.length()/2)+1]; - high = false; - start=1; - } + int extra = s.length()%2; // odd requires extra byte to store + ba = new byte[(s.length())/2 + extra]; + boolean high = extra==0; + int idx; - for(int i=start;i=0x30 && c<=0x39) { + for (int i=0;i=0x30 && c<=0x39) { b=(byte)(c-0x30); - } else if(c>=0x61 && c<=0x66) { + } else if (c>=0x61 && c<=0x66) { b=(byte)(c-0x57); // account for "A" - } else if(c>=0x41 && c<=0x46) { + } else if (c>=0x41 && c<=0x46) { b=(byte)(c-0x37); } else { return null; } - idx = i/2; - if(high) { + idx = (i+extra)/2; + if (high) { ba[idx]=(byte)(b<<4); high = false; } else { @@ -254,5 +264,4 @@ public class Hash { } return ba; } - }