Mega Code Archive

 
Categories / Android / Security
 

SHA1 Utils

/*     Copyright 2010 Cesar Valiente Gordo      This file is part of QuiteSleep.     QuiteSleep is free software: you can redistribute it and/or modify     it under the terms of the GNU General Public License as published by     the Free Software Foundation, either version 3 of the License, or     (at your option) any later version.     QuiteSleep is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     GNU General Public License for more details.     You should have received a copy of the GNU General Public License     along with QuiteSleep.  If not, see <http://www.gnu.org/licenses/>. */ package es.cesar.quitesleep.utils; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.MessageDigest; import java.util.Arrays; import android.util.Log; /**  *   * @author Cesar Valiente Gordo  * @mail cesar.valiente@gmail.com  *  */ public class SHA1Utils {      final static String CLASS_NAME = "SHA1Util";      // Genera SHA-1 de un char[]   public static byte[] generateSHA1 (char chars[]) {     return generateSHA1(new String(chars));   }   // Genera SHA-1 de un String   public static byte[] generateSHA1 (String str) {     return generateSHA1(str.getBytes());   }   // Genera SHA-1 de un InputStream   public static byte[] generateSHA1 (InputStream is) {     try {       return generateSHA1(InputStreamUtils.InputStreamTOByte(is));     } catch (Exception e) {       return null;     }   }        /**    * This function converts a string without conding into a String encoded    * into a SHA1    *     * @param str    * @return    */   public static String generateSHA1toString (String str) {     try     {       byte[] datos = generateSHA1(str.getBytes());       return byteArrayToHexString(datos);            }catch (Exception e) {       if (QSLog.DEBUG_E)QSLog.e(CLASS_NAME,            ExceptionUtils.exceptionTraceToString(               e.toString(),                e.getStackTrace()));       return null;     }   }      /**    * This function converts an InputStream into a SHA1 String    *     * @param is    * @return    */   public static String generateSHA1toString (InputStream is) {     try {       return InputStreamUtils.byteToString(generateSHA1(InputStreamUtils.InputStreamTOByte(is)));     } catch (Exception e) {       return null;     }   }   /**    * This function generates a SHA1 byte[] from a file    * @param file    * @return    */   public static byte[] generateSHA1 (File file) {     try {       return generateSHA1(new FileInputStream (file));     } catch (Exception e) {       return null;     }   }     /**    * This function generates a SHA1 byte[] from another byte[].    * @param bytes    * @return    */   public static byte[] generateSHA1 (byte[] bytes) {     byte[] encryted = null;     try {       MessageDigest digest = MessageDigest.getInstance("SHA-1");       digest.reset();             digest.update(bytes);       encryted = digest.digest();            } catch (Exception e) {        if (QSLog.DEBUG_E)QSLog.e(CLASS_NAME, ExceptionUtils.exceptionTraceToString(           e.toString(),            e.getStackTrace()));           }     return encryted;   }         /**    * This function encodes byte[] into a hex    *     * @param b    * @return    */   public static String byteArrayToHexString(byte[] b){     if (b==null) return null;          StringBuffer sb = new StringBuffer(b.length * 2);     for (int i = 0; i < b.length; i++){       int v = b[i] & 0xff;       if (v < 16) {         sb.append('0');       }       sb.append(Integer.toHexString(v));     }     return sb.toString().toUpperCase();   }   /**    * This function encodes a Hex String into a byte[]    * @param s    * @return    */   public static byte[] hexStringToByteArray(String s) {     if (s==null) return null;          byte[] b = new byte[s.length() / 2];     for (int i = 0; i < b.length; i++){       int index = i * 2;       int v = Integer.parseInt(s.substring(index, index + 2), 16);       b[i] = (byte)v;     }     return b;   }      /**    * This function compares two bytes[]    * @param b1    * @param b2    * @return    */   public static boolean compareByteArrays (byte[] b1, byte[] b2) {     return b1!=null && b2!=null && Arrays.equals(b1, b2) ;   }   /**    * This function compares two Strings.    * @param s1    * @param s2    * @return    */   public static boolean compareHexString (String s1, String s2) {     return s1!=null && s2!=null && s1.equalsIgnoreCase(s2);   }    }