基于Java生成的RSA密钥的JavaScript加密

时间:2012-06-26 11:19:32

标签: java javascript encryption rsa

我正在尝试在Java和JavaScript之间实现加密解决方案。

在Java端的

我有以下静态块:

public class Manager {

  public static KeyPairGenerator keyPairGenerator;
  public static KeyPair keyPair;

  static{       
      try {
        keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(1024);
        keyPair = keyPairGenerator.genKeyPair();
      } catch (NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
  }
  ...
}

一旦我的服务器启动并运行,这基本上会生成一个新的KeyPair ...

然后我以JSON格式提供公钥:

<%
JSONObject json = new JSONObject();
json.put("publicKey", "-----BEGIN PUBLIC KEY-----" + Base64.encodeBase64URLSafeString(Manager.keyPair.getPublic().getEncoded()) + "-----END PUBLIC KEY-----");
%>

我希望使用该密钥(可以是1024或2048位)来编码来自客户端表单的信息...... 谁知道如何使用RSA 1024位base64编码公钥对信息进行编码?

我尝试了jCryption并使其他库变得无济于事......

1 个答案:

答案 0 :(得分:0)

如果您不将公钥作为证书发送,则最好单独发送模数和公共指数(例如,在单独的字段中编码base 64)。默认编码将生成X​​509 SubjectPublicKeyInfo ASN.1结构,您需要在JavaScript库中进行解析。

请注意,您只是在保护自己免受窃听者攻击;中间人攻击仍然可行,因为他们可以用自己的公钥取代你的公钥。 RSA 1024当然已经过时了。幸运的是,你仍然有TLS / SSL来保护你。