有没有在Flex 3中实施加密的最佳方法

时间:2011-04-12 08:00:34

标签: actionscript-3 encryption flex3 secret-key

我们有一个应用程序,我们从其中一个产品设计工具中提取一些机密信息。所以我们使用HTTPS作为通道,我们在将请求参数和一些数据发送到Web服务之前加密。所以,一切似乎都没问题。

但是当我们提交安全审核申请时,他们发现我们已经在源代码中对加密密钥进行了硬编码。他们使用Sothink SWF Decompiler来查看我的SWF文件。他们抓住了关键并对此表示担忧。

我们使用Flex 3(SDK 3.4)开发了此应用程序。有没有最好的方法来使用密钥而不在源代码中进行硬编码。如果有人遇到这种问题,请告诉我。

任何人,请告诉我在SourceCode中使用密钥而不进行硬编码的最佳方法。

以下是我的示例代码:

var currentResult:String = "";
        var strDataToEncrypt:String = "";
        var kdata:ByteArray;

        var todayDate:Date = new Date();

        kdata = Hex.toArray(Hex.fromString("secretKey here"));
        strDataToEncrypt =username.toUpperCase() + "#$#" + password + "#$#"  + todayDate.getTime().toString();          
        var data:ByteArray;
        data = Hex.toArray(Hex.fromString(strDataToEncrypt))
        var name:String = "des3-ecb";
        var pad:IPad = new PKCS5; 
        var mode:ICipher = Crypto.getCipher(name, kdata, pad);
        pad.setBlockSize(mode.getBlockSize());
        mode.encrypt(data);
        currentResult = Base64.encodeByteArray(data);
        var token:String = currentResult;

2 个答案:

答案 0 :(得分:2)

Flash没有完全保护。您的密钥必须在代码中或在外部加载,并且在某些时候,任何足够坚定的人都能够获得它们。你所能做的就是让这个过程变得如此复杂,以至于不值得麻烦。

看看这个问题,了解如何让你的源更难以反编译和阅读:How to protect swf file from being decompiled?

答案 1 :(得分:0)

不要将您的数据作为url参数发送。发送邮件请求。

如果不可能,您可以尝试使用公钥实现方案。但要小心,你实施错误会导致更大的安全问题的可能性很高。