我被要求开发公司的iPad后台,在开发登录界面时,我遇到了身份验证过程中的问题。
密码与salt连接,使用SHA-256进行散列并存储在数据库中。 后台是基于Flash的,并使用 as3crypto 库来哈希然后密码+盐,我的问题是当前实现使用Base64进行输入和输出。
This site演示了如何做到这一点:只需选择Hash并选择Base64作为输入和输出格式并消失。到目前为止,我所有的尝试都产生了与本网站(以及后台代码)给我的结果不同的结果。
虽然我认为理论上应该相对简单:
有什么想法吗? 欢呼并提前致谢
PS:这是Backoffice用于生成散列密码的Flash代码:
var currentResult:ByteArray;
var hash:IHash = Crypto.getHash('sha256');
var data:ByteArray = Base64.decodeToByteArray(str + vatel);
currentResult = hash.hash(data);
return Base64.encodeByteArray(currentResult).toString();
答案 0 :(得分:1)
后台代码没有
(如上所述)
相反,它的作用是
根据上面的步骤1,不清楚输入字符串使用什么类型的字符编码。您需要确保两个系统对输入字符串使用相同的编码!在这种情况下,UTF8,UTF16-LE或UTF16-BE让世界变得与众不同!
首先找出要在iOS端使用的正确字符编码。
哦,Matt Gallagher编写了一个易于使用的包装类,用于在iOS上使用哈希,HashValue.m,我已经使用它并取得了良好的效果。