Mega Code Archive

 
Categories / Java / Security
 

SHA1 Sum

/**  * This file is distributed under the GPL  * $Id: SHA1Sum.java 1810 2009-06-22 17:33:07Z scotta $  */ //package net.bnubot.util; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.MessageDigest; //import net.bnubot.logging.Out; /**  * @author scotta  */ public class SHA1Sum {   private final byte[] sha1sum;   private String display = null;   public SHA1Sum(String hexStr) throws Exception {     if(!hexStr.matches("[0-9a-fA-F]{40}"))       throw new Exception("Invalid format: " + hexStr);     display = hexStr.toLowerCase();     sha1sum = new byte[20];     for(int i = 0; i < 20; i++) {       int pos = i << 1;       sha1sum[i] = (byte) Integer.parseInt(hexStr.substring(pos, pos+2), 16);     }   }   public SHA1Sum(byte[] bytes) throws Exception {     MessageDigest digest = MessageDigest.getInstance("SHA1");     digest.update(bytes, 0, bytes.length);     sha1sum = digest.digest();   }   public SHA1Sum(File f) throws Exception {     MessageDigest digest = MessageDigest.getInstance("SHA1");     InputStream is = new FileInputStream(f);     byte[] buffer = new byte[8192];     do {       int read = is.read(buffer);       if(read <= 0)         break;       digest.update(buffer, 0, read);     } while(true);     sha1sum = digest.digest();      }   private static String hexChr(int b) {     return Integer.toHexString(b & 0xF);   }   private static String toHex(int b) {     return hexChr((b & 0xF0) >> 4) + hexChr(b & 0x0F);   }   @Override   public String toString() {     if(display == null) {       display = "";       for(byte b : sha1sum)         display += toHex(b);     }     return display;   }   public byte[] getSum() {     return sha1sum;   }   @Override   public boolean equals(Object obj) {     if(!(obj instanceof SHA1Sum))       return false;     byte[] obj_sha1sum = ((SHA1Sum)obj).sha1sum;     if(sha1sum.length != obj_sha1sum.length)       return false;     for(int i = 0; i < sha1sum.length; i++)       if(sha1sum[i] != obj_sha1sum[i])         return false;     return true;   } }