0

我正在尝试实现 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();
      }
  }
  ...
}

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

然后我以 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 和严重的其他库无济于事......

4

1 回答 1

0

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

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

于 2012-06-29T00:23:52.197 回答