如何在我的gwt应用程序中导入java.security。*

我想用gwt开发一个插件。 它必须使用java.security。*来生成客户端密钥。 我已经提出了所有要求但它显示以下错误。

加载模块

coreservlets.GwtApp1

Loading inherited module 'coreservlets.GwtApp1' Loading inherited module 'java.security.KeyPair' [ERROR] Unable to find 'java/security/KeyPair.gwt.xml' on your classpath; >could be a typo, or maybe you forgot to include a classpath entry for source? [ERROR] Line 15: Unexpected exception while processing element 'inherits' 

我在我的gwtapp1.gwt.xml文件中inheritance了所有相关的类,如“java.security.KeyPair”

我也在classpath本身包含jar。但仍然没有错误。 我该怎么办.plz建议这里是我的java代码

 package coreservlets.client; import java.io.UnsupportedEncodingException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; public class Keygen { private PrivateKey privKey; private PublicKey pubKey; private static Keygen keygen = null; private Keygen() { } public static Keygen getInstance() { if (keygen == null) { keygen = new Keygen(); } return keygen; } public void KeyGenerator(String ALGORITHAM) { KeyPairGenerator keyGen = null; SecureRandom random = null; try { keyGen = KeyPairGenerator.getInstance(ALGORITHAM); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } try { random = SecureRandom.getInstance("SHA1PRNG", "SUN"); //random = SecureRandom.getInstance("SHA1PRNG"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchProviderException ex) { ex.printStackTrace(); } //keyGen.initialize(1024, random); keyGen.initialize(1024); KeyPair key = keyGen.generateKeyPair(); privKey = key.getPrivate(); pubKey = key.getPublic(); } public String getPubKeyasString() { //return Base64.encodeBase64String(pubKey.getEncoded()); try { return new String(pubKey.getEncoded(),"ISO-8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public String getPriKeyasString() { //return Base64.encodeBase64String(privKey.getEncoded()); try { return new String(privKey.getEncoded(),"ISO-8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } 

}

对于密钥生成,您可以使用gwt-crypto库,但要准备好遇到某些性能问题和不支持的function。

[编辑]不久前,我使用jsni成功地包装了一个纯粹的js rsa解决方案。 我采用的是jsbn.js库

.gwt.xml文件中, 引用另一个.gwt.xml文件。 我怀疑你使用它像java import ...而不是?

如果要在GWT中使用java.security.KeyPair客户端,则应该做的是确定源可供GWT编译器使用。 这是使用.gwt.xml文件中的条目完成的。

您可能想要访问GWT JRE仿真参考页面,遗憾的是您会看到没有任何javax.*软件包支持,所以您的项目运气良好……也许您应该仅在服务器端使用KeyPair保留代码?

希望有所帮助。

Interesting Posts