Ruby'在Java中是否有等价物;s摘要::MD5.base64摘要?

Ruby'在Java中是否有等价物;s摘要::MD5.base64摘要?,java,ruby,Java,Ruby,我想把Ruby代码转换成Java。一切都很好,除了一句话: digest = Digest::MD5.base64digest("#{width} #{height} #{unescaped_path} #{salt}") digest.tr!('+/', '-_') digest.tr!('=', '') 这段代码在Java中看起来如何?我想应该是这样的 digest = Base64.getDecoder().decode(width + " " + height + unescaped_

我想把Ruby代码转换成Java。一切都很好,除了一句话:

digest = Digest::MD5.base64digest("#{width} #{height} #{unescaped_path} #{salt}")
digest.tr!('+/', '-_')
digest.tr!('=', '')
这段代码在Java中看起来如何?我想应该是这样的

digest = Base64.getDecoder().decode(width + " " + height + unescaped_path + salt);

然而,
tr对我来说不清楚。它看起来像是
replace
,但我不确定。

方法有两种模式。一种是将集合A中的字符映射到集合B中的字符:

"ABBA".tr('ABC', 'DEF')
# => "DEED"
这需要映射长度相同的字符串。如果替换端为空,则删除匹配集中字符的实例:

"ABBA".tr('A', '')
# => "BB"

tr
tr
的一个就地版本,但工作原理相同。

这里是tr docs@PavelOganesyan不幸的是,我在阅读了那一页后写下了我的问题,并意识到它让我感到困惑。基于此页面,我们似乎替换了位置中的字符。但是digest.tr是什么呢!(“|/”,“-”)你怎么办?是否将所有+字符替换为-并将所有斜杠替换为??这就是效果吗?或者它只是用“-”替换“+/”?@PavelOganesyan同样,tr+(“=”,“”)这是从字符串中删除all=吗?你完全正确:它将所有+字符替换为-并将所有斜杠替换为uu和tr+(“=”,“”)将删除all=我不是rubyist,但我猜代码会计算MD5哈希,然后对生成的字节数组进行base64 ECN编码。这是一篇关于。。。您需要使用base64编码器,而不是解码器。