SHA1 Utils : SHA « Security « Android






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);
  }

  
}

   
  








Related examples in the same category

1.SHA-1 string
2.hmac Sha1 Digest
3.Sha1 hashes based on a given String
4.Using SharedPreferences to store password
5.Using SharedPreferences
6.Drawing Shapes
7.Animated wallpaper draws a rotating wireframe shape with a choice of 2 shapes
8.Animation: shake
9.Get reference from SharedPreferences
10.Glutes shape
11.Reshaping Arabic Sentences and Text Utilities to deal with Arabic
12.Save SharedPreferences
13.Save value to SharedPreferences
14.SharedPreferences Set and get value
15.Compute the SHA-1 hash of the given byte array
16.compute SHA-1 Hash