package com.android.dvci.crypto;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.zip.CRC32;
import com.android.dvci.auto.Cfg;
import com.android.dvci.util.ByteArray;
import com.android.dvci.util.Check;
public class Digest {
/**
* Calcola il SHA1 del messaggio, usando la crypto api.
*
* @param message
* the message
* @param offset
* the offset
* @param length
* the length
* @return the byte[]
*/
public static byte[] SHA1(final byte[] message, final int offset, final int length) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("SHA-1"); //$NON-NLS-1$
digest.update(message, offset, length);
final byte[] sha1 = digest.digest();
return sha1;
} catch (final NoSuchAlgorithmException e) {
if (Cfg.EXCEPTION) {
Check.log(e);
}
}
return null;
}
/**
* Calcola il MD5 del messaggio, usando la crypto api.
*
* @param message
* the message
* @param offset
* the offset
* @param length
* the length
* @return the byte[]
*/
public static byte[] MD5(final byte[] message, final int offset, final int length) {
MessageDigest digest;
try {
// TODO: messages
digest = MessageDigest.getInstance("MD5"); //$NON-NLS-1$
digest.update(message, offset, length);
final byte[] md5 = digest.digest();
return md5;
} catch (final NoSuchAlgorithmException e) {
if (Cfg.EXCEPTION) {
Check.log(e);
}
}
return null;
}
/**
* SHA-1.
*
* @param message
* the message
* @return the byte[]
*/
public static byte[] SHA1(final byte[] message) {
return SHA1(message, 0, message.length);
}
public static String SHA1(final String message) {
return ByteArray.byteArrayToHex(SHA1(message.getBytes()));
}
/**
* MD5.
*
* @param message
* the message
* @return the byte[]
*/
public static byte[] MD5(final byte[] message) {
return MD5(message, 0, message.length);
}
public static String MD5(final String message) {
return ByteArray.byteArrayToHex(MD5(message.getBytes()));
}
/**
* Standard crc
*
* @param packet
* @return
*/
public static long CRC32(byte[] packet) {
final CRC32 crc = new CRC32();
crc.reset();
crc.update(packet);
return crc.getValue();
}
}