通过带有gwt-crypto库的Google App Engine在Google Web Toolkit应用程序上生成客户端RSA密钥对

问题描述 投票:1回答:1

我一直在尝试为在Google App Engine上运行的Google Web Toolkit应用程序实施RSA方案。 客户端加密和密钥管理是必需的,因此我正在使用gwt-crypto (gwt-crypto-2.3.0.jar)。 该文档的一部分已损坏,因此我遵循了Bouncy Castle的引用,例如此答案 。 我有一个静态方法来创建一个AsymmetricCipherKeyPair,它应该包含私钥和公钥,如下所示。

public static AsymmetricCipherKeyPair getRsaKeyPair() {
    RSAKeyPairGenerator keyPairGenerator = new RSAKeyPairGenerator();
    RSAKeyGenerationParameters param = new RSAKeyGenerationParameters(RSA_PUBLIC_EXPONENT_FERMAT, SECURE_RANDOM, RSA_STRENGTH, RSA_CERTAINTY);
    keyPairGenerator.init(param);
    /* RSAKeyPairGenerator.generateKeyPair() freezes on Google App Engine */
    return keyPairGenerator.generateKeyPair();
}

当我在localhost中运行开发模式时,它运行良好(我相信是从Eclipse和Jetty进行的)。 但是,当我将其部署到Google App Engine时,它会冻结在keyPairGenerator.generateKeyPair()调用上。 我正在使用以下参数。 我试图scalling向下RSA_STRENGTH为256〜1024和RSA_CERTAINTY从1到80。我还试图RSA_PUBLIC_EXPONENT_FERMAT任3(F0, 0x3 )或65537(F4, 0x10001

private static final int RSA_STRENGTH = 1024;
private static final int RSA_CERTAINTY = 4;
private static final BigInteger RSA_PUBLIC_EXPONENT_FERMAT = new BigInteger("3", 16);
private static final SecureRandom SECURE_RANDOM = SecureRandom.getInstance("SHA1PRNG");

我尝试了多种浏览器,但他们总是说脚本已停止响应或花费了太长时间,如果我尝试继续执行,它们将冻结或崩溃。 通常,在服务器端,控制台或Google App Engine环境上没有其他错误。 我不知道该怎么办,因为它可以在本地主机上运行时在浏览器上完美且快速地运行,但是在部署到云中后我无法使其正常运行,而且我不知道如何调试它。 谁能帮我? 可能是Google App Engine结构的问题吗? 还是某种资源限制?

我也在使用SmartGWT,不确定是否重要。 我真的被困在这里。

提前致谢。

java google-app-engine gwt encryption rsa
1个回答
0
投票

前段时间,我编写了一个gwt应用程序来执行相同的操作。 在对gwt-crypto进行了长时间的黑客攻击之后,我完成了使用外部js解决方案的工作。

gwt-crypto密钥生成非常慢,从逻辑上讲,它运行在Java上,因此可以在dev模式下运行,但是在编译代码时,BigInteger的执行效果确实很差。

阅读我对以下问题的回答: 如何在我的gwt应用程序中导入java.security。*

© www.soinside.com 2019 - 2024. All rights reserved.