I have a java code base that generates an URL safe base64 encoded hash from a string, and wondering if / how this would be possible with linux command line tools. I\'m guess
You can use a StringBuilder to turn your hex into a meaningful string:
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] digest = md.digest("testString".getBytes());
StringBuilder sb = new StringBuuilder();
for (byte b : digest) {
sb.append(Integer.toHexString(b & 0xff));
}
String base64 = Base64.encodeBase64(sb.toString());
Combined with not including the newline in the echo command, works here ...
You're base64 encoding a hexadecimal string, not the byte values of the hash, which is the equivalent of:
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] digest = md.digest("testString".getBytes()); // Missing charset
String hex = Hex.encodeHexString(digest);
String base64 = Base64.encodeBase64(hex.getBytes());