Java是否与Ruby的Digest :: MD5.base64digest等效?

时间:2019-09-19 21:12:53

标签: 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_path + salt);

但是,tr!对我来说还不清楚。看起来像replace,但我不确定。

1 个答案:

答案 0 :(得分:1)

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

"ABBA".tr('ABC', 'DEF')
# => "DEED"

这需要映射相同长度的字符串。如果替换面为空,则删除匹配集中的字符实例:

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

tr!tr的就地版本,但功能相同。