2016-11-09 60 views
1

我試着用鹽得到base64編碼MD5哈希密碼(鹽是MD5,我得到了base64編碼)haXe的MD5錯了Flash平臺

var pass = "hello"; 
var salt=haxe.crypto.Base64.encode(haxe.crypto.Md5.make(haxe.io.Bytes.ofString("hello"))); 
    trace(haxe.crypto.Base64.encode(haxe.crypto.Md5.make(haxe.io.Bytes.ofString(haxe.crypto.Base64.decode(salt).toString() + haxe.crypto.Md5.make(haxe.io.Bytes.ofString(pass)).toString())))); 
上ネ

它寫道:

YWsigXuA7tn2XDqjjNKQVA== 

但閃光燈給我:

9Hpay/lKyMcm/s8qpPRczQ== 

他們爲什麼不一樣? 以及我如何解決這個問題?

回答

1

這解決問題

var buf:Bytes = Bytes.ofString("aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb"); //create Bytes 32 long 
buf.blit(0, Base64.decode(salt), 0, 16); //set first 16 
buf.blit(16, Md5.make(Bytes.ofString(pass)), 0, 16); //set second 16 
var password:String = Base64.encode(Md5.make(buf));//md5(salt+pass) 
+0

如果你想知道,這個問題似乎是迫使從任意字節的字符串轉換。例如,當字符串中的空字節在跨平臺(或Haxe目標)上變化很大時,會發生什麼情況。 –