我正在尝试在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并使其他库变得无济于事......
答案 0 :(得分:0)
如果您不将公钥作为证书发送,则最好单独发送模数和公共指数(例如,在单独的字段中编码base 64)。默认编码将生成X509 SubjectPublicKeyInfo ASN.1结构,您需要在JavaScript库中进行解析。
请注意,您只是在保护自己免受窃听者攻击;中间人攻击仍然可行,因为他们可以用自己的公钥取代你的公钥。 RSA 1024当然已经过时了。幸运的是,你仍然有TLS / SSL来保护你。