【问题标题】:JavaScript encryption based on Java generated RSA key基于 Java 生成的 RSA 密钥的 JavaScript 加密
【发布时间】:2012-06-29 08:25:29
【问题描述】:

我正在尝试在 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 和严重的其他库无济于事......

【问题讨论】:

  • 服务器生命周期内所有请求/响应之间共享一个密钥对?您有什么理由不使用透明地执行此操作的 SSL?相关stackoverflow.com/questions/610048/…
  • 我们也在做 SSL……这是一个额外的层……我们就是那样疯狂……:)

标签: java javascript encryption rsa


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多