how one can run following Java functionality using shell script only? Shouldn't openssl do the trick? For some reason values are not same.
Shell:
$ cat test.txt 
test
$ openssl sha1 test.txt
SHA1(test.txt)= fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4
Java code (play framework origin):
import org.apache.commons.codec.binary.Hex;
public static String hexSHA1() {
    value = "test";
    try {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA-1");
        md.update(value.getBytes("utf-8"));
        byte[] digest = md.digest();
        return byteToHexString(digest);
    } catch (Exception ex) {
        return null;
    }
}
public static String byteToHexString(byte[] bytes) {
    // a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
    return String.valueOf(Hex.encodeHex(bytes));
}
fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4 != a94a8fe5ccb19ba61c4c0873d391e987982fbbd3