Java MD5.stringify()与Ruby等效
我尽了最大努力,在网上到处找,但什么也找不到。我有这个java函数,我需要将它移植到Ruby,但运气不好Java MD5.stringify()与Ruby等效,java,ruby,Java,Ruby,我尽了最大努力,在网上到处找,但什么也找不到。我有这个java函数,我需要将它移植到Ruby,但运气不好 public static String stringify(byte[] buf) { StringBuffer sb = new StringBuffer(2 * buf.length); for (int i = 0; i < buf.length; i++) { int h = (buf[i] & 0xF0) >> 4; int
public static String stringify(byte[] buf)
{
StringBuffer sb = new StringBuffer(2 * buf.length);
for (int i = 0; i < buf.length; i++)
{
int h = (buf[i] & 0xF0) >> 4;
int l = buf[i] & 0xF;
sb.append((char)(h > 9 ? 65 + h - 10 : 48 + h));
sb.append((char)(l > 9 ? 65 + l - 10 : 48 + l));
}
return sb.toString();
}
公共静态字符串字符串化(字节[]buf)
{
StringBuffer sb=新的StringBuffer(2*buf.长度);
对于(int i=0;i>4;
int l=buf[i]&0xF;
sb.append((char)(h>9?65+h-10:48+h));
sb追加((字符)(l>9?65+l-10:48+l));
}
使某人返回字符串();
}
有什么想法吗?我几乎精通Java
从CFML脚本调用此函数:
<cfscript>
nonceBytes = createobject("java","coldfusion.security.SecurityUtils").generateRandom(8);
stringify = createobject("java","coldfusion.runtime.MD5").stringify(nonceBytes);
</cfscript>
<cfoutput>#stringify#</cfoutput>
nonceBytes=createobject(“java”,“coldfusion.security.SecurityUtils”).generateradom(8);
stringify=createobject(“java”,“coldfusion.runtime.MD5”).stringify(非字节);
#严格化#
输出:
9C45FC098B00BD14
这似乎在对缓冲区中的每个字符进行基本的数字到十六进制的转换,因此如果是这种情况:
'foo'.unpack('H*')[0]
# => "666f6f"
你能告诉我们它在做什么吗?应该输出这样的字符串:F8877C4CD14A04BB、464301A9616584D0等,称为like:MD5.stringify(非字节)