2014-01-06 52 views
0

试过我最好的,看了整个互联网,但找不到任何东西。我有这个Java函数,我需要将它移植到Ruby,但没有运气。Java MD5.stringify()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 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(); 
} 

有什么想法吗?我几乎是Java中的analphabet。

这个函数从CFML脚本调用:

<cfscript> 
    nonceBytes = createobject("java","coldfusion.security.SecurityUtils").generateRandom(8); 
    stringify = createobject("java","coldfusion.runtime.MD5").stringify(nonceBytes); 
</cfscript> 

<cfoutput>#stringify#</cfoutput> 

输出:9C45FC098B00BD14

+0

你能告诉我们它在做什么? –

+0

应该输出这样一个字符串:F8877C4CD14A04BB,464301A9616584D0等 – bsteo

+0

调用类似于:MD5.stringify(nonceBytes)< - nonceBytes 8字节编号 – bsteo

回答

0

这似乎是做初步号为十六进制转换为在缓冲器中的每个字符,因此,如果是这种情况:

'foo'.unpack('H*')[0] 
# => "666f6f" 
+0

我会尝试.. – bsteo