【问题标题】:haxe MD5 wrong on flash platform在 flash 平台上 haxe MD5 错误
【发布时间】:2016-11-09 12:42:36
【问题描述】:

我尝试使用 salt 获取 base64 编码的 md5 哈希密码(salt 是 md5,我得到了 base64 编码)

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()))));

在 neko 上写道:

YWsigXuA7tn2XDqjjNKQVA==

但是闪给我:

9Hpay/lKyMcm/s8qpPRczQ==

为什么它们不同? 以及如何解决这个问题?

【问题讨论】:

    标签: flash md5 haxe neko


    【解决方案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)
    

    【讨论】:

    • 如果您想知道,问题似乎是强制从任意字节转换为字符串。例如,当字符串中有空字节时会发生什么,跨平台(或 Haxe 目标)变化很大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多