106 lines
2.6 KiB
Java
106 lines
2.6 KiB
Java
package org.gcube.dataanalysis.ecoengine.utils;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.math.BigInteger;
|
|
import java.security.MessageDigest;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
public class Sha1 {
|
|
|
|
static String fixedCachePrefix = "cache_";
|
|
|
|
private static String convertToHex(byte[] data) {
|
|
StringBuffer buf = new StringBuffer();
|
|
for (int i = 0; i < data.length; i++) {
|
|
int halfbyte = (data[i] >>> 4) & 0x0F;
|
|
int two_halfs = 0;
|
|
do {
|
|
if ((0 <= halfbyte) && (halfbyte <= 9))
|
|
buf.append((char) ('0' + halfbyte));
|
|
else
|
|
buf.append((char) ('a' + (halfbyte - 10)));
|
|
halfbyte = data[i] & 0x0F;
|
|
} while (two_halfs++ < 1);
|
|
}
|
|
return buf.toString();
|
|
}
|
|
|
|
public static String SHA1(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException {
|
|
MessageDigest md;
|
|
md = MessageDigest.getInstance("SHA-1");
|
|
byte[] sha1hash = new byte[40];
|
|
md.update(text.getBytes("iso-8859-1"), 0, text.length());
|
|
sha1hash = md.digest();
|
|
return convertToHex(sha1hash);
|
|
}
|
|
|
|
public static String calcFilePrefix(String filestring) {
|
|
try {
|
|
// prendo i primi 3 caratteri del file
|
|
int len = filestring.length();
|
|
int counter = 0;
|
|
String cacheDir = "";
|
|
|
|
// Bug
|
|
//
|
|
// RE regex = new RE("[a-z]");
|
|
// for (int i = 0; i < len; i++) {
|
|
// String chars = "" + filestring.charAt(i);
|
|
// boolean optioned = regex.match(chars);
|
|
|
|
// Fix
|
|
Pattern p = Pattern.compile("[a-z]");
|
|
|
|
for (int i = 0; i < len; i++) {
|
|
String chars = "" + filestring.charAt(i);
|
|
Matcher m = p.matcher(chars);
|
|
boolean optioned = m.matches();
|
|
|
|
if (optioned) {
|
|
counter++;
|
|
cacheDir += chars;
|
|
}
|
|
if (counter > 2)
|
|
break;
|
|
}
|
|
|
|
return cacheDir + "/";
|
|
} catch (Exception e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static String calculateDigestMD5(String plainText)
|
|
|
|
{
|
|
|
|
String hashText = "";
|
|
try {
|
|
MessageDigest m = MessageDigest.getInstance("MD5");
|
|
m.reset();
|
|
m.update(plainText.getBytes("UTF-8"));
|
|
|
|
byte[] digestBytes = m.digest();
|
|
BigInteger digestValue = new BigInteger(1, digestBytes);
|
|
|
|
hashText = digestValue.toString(16);
|
|
|
|
// filling
|
|
int remain = 32 - hashText.length();
|
|
|
|
for (int i = 0; i < remain; i++)
|
|
hashText = "0" + hashText;
|
|
|
|
} catch (Exception e) {
|
|
// TTSLogger.getLogger().debug("Exception: " + e.getMessage());
|
|
|
|
}
|
|
return hashText;
|
|
}
|
|
}
|