2012-08-29 12:48:38 +02:00
|
|
|
package org.gcube.dataanalysis.ecoengine.utils;
|
|
|
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
import java.math.BigInteger;
|
|
|
|
import java.security.MessageDigest;
|
|
|
|
import java.security.NoSuchAlgorithmException;
|
2021-01-29 17:20:43 +01:00
|
|
|
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);
|
2012-08-29 12:48:38 +02:00
|
|
|
}
|
2021-01-29 17:20:43 +01:00
|
|
|
return buf.toString();
|
2012-08-29 12:48:38 +02:00
|
|
|
}
|
2021-01-29 17:20:43 +01:00
|
|
|
|
|
|
|
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);
|
2012-08-29 12:48:38 +02:00
|
|
|
}
|
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
public static String calcFilePrefix(String filestring) {
|
|
|
|
try {
|
|
|
|
// prendo i primi 3 caratteri del file
|
|
|
|
int len = filestring.length();
|
|
|
|
int counter = 0;
|
|
|
|
String cacheDir = "";
|
2021-02-01 15:55:56 +01:00
|
|
|
|
|
|
|
// Bug
|
2021-01-29 17:20:43 +01:00
|
|
|
//
|
2021-02-01 16:03:52 +01:00
|
|
|
// 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]");
|
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
|
String chars = "" + filestring.charAt(i);
|
2021-02-01 16:03:52 +01:00
|
|
|
Matcher m = p.matcher(chars);
|
|
|
|
boolean optioned = m.matches();
|
2021-01-29 17:20:43 +01:00
|
|
|
|
|
|
|
if (optioned) {
|
|
|
|
counter++;
|
|
|
|
cacheDir += chars;
|
|
|
|
}
|
|
|
|
if (counter > 2)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return cacheDir + "/";
|
|
|
|
} catch (Exception e) {
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
return null;
|
|
|
|
}
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
public static String calculateDigestMD5(String plainText)
|
2012-08-29 12:48:38 +02:00
|
|
|
|
|
|
|
{
|
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
String hashText = "";
|
|
|
|
try {
|
|
|
|
MessageDigest m = MessageDigest.getInstance("MD5");
|
|
|
|
m.reset();
|
|
|
|
m.update(plainText.getBytes("UTF-8"));
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
byte[] digestBytes = m.digest();
|
|
|
|
BigInteger digestValue = new BigInteger(1, digestBytes);
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
hashText = digestValue.toString(16);
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
// filling
|
|
|
|
int remain = 32 - hashText.length();
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
for (int i = 0; i < remain; i++)
|
|
|
|
hashText = "0" + hashText;
|
2012-08-29 12:48:38 +02:00
|
|
|
|
2021-01-29 17:20:43 +01:00
|
|
|
} catch (Exception e) {
|
|
|
|
// TTSLogger.getLogger().debug("Exception: " + e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
return hashText;
|
2012-08-29 12:48:38 +02:00
|
|
|
}
|
|
|
|
}
|