2010-07-01 53 views
0

我更改了Ruby代碼片段,現在它可以工作,我忘記了在以前的文章中添加了md5部分,對不起。之後我重新測試了PHP代碼片段,現在兩個輸出都是一樣的。將php轉換爲ruby

這是我到目前爲止有:

PHP:

"Inx ".base64_encode('Jon').' '.base64_encode(pack('H*' , md5($message."werty"))) 

紅寶石:

md5 = Digest::MD5.digest(msg +"werty") 
auth = "Inx " + Base64.b64encode('Jon').strip() + " " + Base64.b64encode(md5).strip() 

輸出是:

PHP:

Inx Sm9u FL6ZQ1EAMcVDpUhGQ9kxjg== 

紅寶石:

Inx Sm9u FL6ZQ1EAMcVDpUhGQ9kxjg== 

,這是所使用的消息:

<?xml version="1.0" encoding="UTF-8"?> <push><application>Jon</application><service><![CDATA[test-2]]></service><service-provider>Absolute</service-provider><session-id>jbg01</session-id><trigger>bulk link</trigger><sms-text url="http://example.com" url-tag="xxx"><![CDATA[Hello world]]></sms-text><recipient>555555</recipient><from>5555</from></push> 

我從XML改變了一些敏感信息的,所以它不是完全一樣在PHP中使用的字符串串。

+0

下一次只需添加自己的答案。這將使問題和答案更加清晰。我必須多讀幾遍才能意識到你已經解決了這個問題。 – BobbyShaftoe 2010-07-03 00:02:00

回答

1
require "digest/md5" 
Digest::MD5.digest(string) 

產生二進制MD5摘要(16個字節)直接,你不需要pack