Я пытаюсь закодировать в base64 строку, которая была вычислена из функции MD5 в R. Но результат, похоже, отличается от того, что я получаю Scala / Java / JavaScript:
Scala / Java / JavaScriptдля пустой строки дает в результате: 1B2M2Y8AsgTpgAmY7PhCfg ==
import java.security.MessageDigest
import org.apache.commons.codec.binary.Base64
object Test extends App {
val empty = ""
val md5 = MessageDigest.getInstance("MD5").digest(empty.getBytes("UTF-8"))
val base64 = new String(Base64.encodeBase64(md5))
println(base64)
//Result: 1B2M2Y8AsgTpgAmY7PhCfg==
}
Аналогично, в JavaScript см. https://www.npmjs.com/package/js-md5
md5.base64(''); // 1B2M2Y8AsgTpgAmY7PhCfg==
Но в R,Я получаю другой результат: ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2U =
> library(digest)
> md5 <- digest("", algo="md5", serialize=F)
> md5 [1] "d41d8cd98f00b204e9800998ecf8427e"
> base64encode(md5) [1] "ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2U="
Мне интересно, если MD5 не кодирует в шестнадцатеричном виде?