Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 使用as3crypto多途径登录assistly.com_Actionscript 3_Oauth_As3crypto - Fatal编程技术网

Actionscript 3 使用as3crypto多途径登录assistly.com

Actionscript 3 使用as3crypto多途径登录assistly.com,actionscript-3,oauth,as3crypto,Actionscript 3,Oauth,As3crypto,我正在尝试使用我的用户的多路径登录自动登录到assistly.com,如下所述: 我曾尝试使用as3crypto将他们的代码示例()转换为Actionscript,但显然没有成功 以下是我所拥有的: package { import com.adobe.crypto.SHA1; import com.adobe.serialization.json.JSON; import com.hurlant.crypto.* import com.hurlant.util.

我正在尝试使用我的用户的多路径登录自动登录到assistly.com,如下所述:

我曾尝试使用as3crypto将他们的代码示例()转换为Actionscript,但显然没有成功

以下是我所拥有的:

package
{
    import com.adobe.crypto.SHA1;
    import com.adobe.serialization.json.JSON;
    import com.hurlant.crypto.*
    import com.hurlant.util.Base64;
    import flash.utils.ByteArray;

    public class AssistlySingleSignOn
    {
        protected static var API_SITE_KEY:String = "YOUR SITE KEY"
        protected static var MULTIPASS_KEY:String = "YOUR MULTIPASS API KEY"

        public function AssistlySingleSignOn()
        {
        }

        public static function generateMultipass(uid:String, username:String, email:String):String
        {
            var o:Object = {};
            o.uid = uid;
            o.expires = "2012-12-29T10:25:28-08:00";
            o.customer_email = email;
            o.customer_name = username;

            var salted:String = API_SITE_KEY + MULTIPASS_KEY;
            var hash:String = SHA1.hash(salted);
            var saltedHash:String = hash.substr(0, 16);
            var iv:String = "OpenSSL for Ruby";

            var ivByteArray:ByteArray = new ByteArray();
            ivByteArray.writeUTFBytes(iv);

            var key:ByteArray = new ByteArray();
            key.writeUTFBytes(saltedHash);
            key.position = 0;

            var json:String = JSON.encode(o);
            var jsonByteArray:ByteArray = new ByteArray();
            jsonByteArray.writeUTFBytes(json);

            var padding:IPad = new PKCS5(16);
            ivByteArray.position = 0;

            key.position = 0;
            var cyphered:CBCMode = Crypto.getCipher("aes-128-cbc", key, padding) as CBCMode;
        jsonByteArray.position = 0;
        cyphered.IV = ivByteArray;
        cyphered.encrypt(jsonByteArray);

            jsonByteArray.position = 0;
        var base64:String = Base64.encode(jsonByteArray.readUTFBytes(jsonByteArray.length));

        /*Convert to a URL safe string by performing the following

        Remove any newlines
        Remove trailing equal (=) characters
        Change any plus (+) characters to dashes (-)
        Change any slashes (/) characters to underscores (_)*/

        base64 = base64.replace(/\n/g, "");
        base64 = base64.replace(/=/g, "");
        base64 = base64.replace(/+/g, "-");
        base64 = base64.replace(/\//g, "_");

        return base64;
        }
    }
}

我假设我在静脉注射或填充物上做错了什么,因为我不太明白;-)

您可能需要使用不同的加密类,或者修改as3crypto类。我知道SHA1函数与PHP SHA1函数之间存在不一致之处。见此:


这可能会使您的值无效。我的建议是在计算过程中跟踪所有数据,并在PHP或github中的其他示例中运行这些数据。看看数据的分歧。我打赌这将是与AS3Crypto有关的问题。

谢谢,但我认为AS3Crypto不是问题所在。在另一篇文章中,解决方案是使用writeUTFBytes而不是writeUTF。writeUTF在开始处添加字节数,因此它也将生成不同的哈希。我的下一步将是按照您的建议,在php版本旁边跟踪它。我想as3crypto毕竟做了一些不同的事情。谢谢