我们有一个应用程序,我们从其中一种产品设计工具中提取一些机密信息。因此,我们使用 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;