【发布时间】:2015-06-08 03:42:00
【问题描述】:
我尝试实现 rsa 公钥系统。 服务器是用 node-js 实现的,并使用 node-rsa 库来加密/解密 rsa。
客户端是用java实现的。
在认证部分,客户端(java)用服务器的公钥加密客户端的id和密码,并通过http post发送到服务器。
所以服务器可以完美接收它们,但是在 node-rsa 解密函数中,什么都没有发生,并且 http 请求被 500 拒绝
下面的客户端代码
public static boolean REQ_AUTH(String user_id, String user_pw )
{
InputStreamReader ret = null;
try
{
JSONObject obj = new JSONObject();
obj.put("user_id", "waps12b");
obj.put("user_pw", "password");
String cipher = VoteUtility.EncryptRSA(obj.toString());
ret = PostHTTP(API_URL.AUTH, "cipher=" + cipher);
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject)parser.parse(ret);
ret.close();
String result = (String)json.get(JSON_KEY.Result);
if(result.equals("FALSE"))
return false;
VoteUtility.Setting((String)json.get(JSON_KEY.Kp));
RN = (String)json.get(JSON_KEY.RN);
return true;
}catch(Exception ex)
{
ex.printStackTrace();
}
return false;
}
下面的服务器代码
router.all('/auth', function(req, res){
var cipher = req.body.cipher;
console.log('[cipher] : ' + cipher);
var buf = new Buffer(cipher,'hex');
console.log('[buf] : ' + buf.toString('hex'));
var decrypted = key.decrypt(buf);
console.log('[plain] : ' + decrypted);
}
和下面的服务器日志
[cipher] : 46641844ffffff8d18ffffffb6ffffff8d6fffffffcf37ffffffd3ffffffa520721407ffffffbf7810ffffffc87d7925ffffffae16ffffffc9620f356872ffffff892828ffffffb533ffffffb324ffffffffffffffeefffffffa6b78ffffff8effffffb1ffffffb3ffffffdd681affffffae405d105affffff9626ffffff85fffffff8ffffffc9fffffff22c69ffffffa87efffffff8ffffffe64e082fffffffd247500f176dffffffedffffffcc6c5affffffc712ffffff9136ffffffbe26672b206cffffffa56dffffffa4ffffff85ffffffc0ffffffff0b6936fffffffb61ffffff8a0f3effffff8effffff965d5851ffffffaeffffff9dffffffb1417c57ffffffbfffffffee5affffff80ffffff9bffffffac0bffffff9cffffffaf6377327d
[buf] : 46641844ffffff8d18ffffffb6ffffff8d6fffffffcf37ffffffd3ffffffa520721407ffffffbf7810ffffffc87d7925ffffffae16ffffffc9620f356872ffffff892828ffffffb533ffffffb324ffffffffffffffeefffffffa6b78ffffff8effffffb1ffffffb3ffffffdd681affffffae405d105affffff9626ffffff85fffffff8ffffffc9fffffff22c69ffffffa87efffffff8ffffffe64e082fffffffd247500f176dffffffedffffffcc6c5affffffc712ffffff9136ffffffbe26672b206cffffffa56dffffffa4ffffff85ffffffc0ffffffff0b6936fffffffb61ffffff8a0f3effffff8effffff965d5851ffffffaeffffff9dffffffb1417c57ffffffbfffffffee5affffff80ffffff9bffffffac0bffffff9cffffffaf6377327d
POST /api/auth 500 421.025 ms - 1158
我该如何解决?
【问题讨论】:
-
您能否将您的服务器代码包含在
try-catch块中,并告诉我们究竟是什么错误?我认为您可能会破坏密钥对的一致性,这意味着您没有使用密钥对中的相同私钥来解密用于加密文本的(密钥对)公钥的密文。跨度>
标签: javascript java node.js rsa node-rsa