我正在尝试使用以下步骤在 java 中进行 api 调用:
- json编码
- RC4 加密
- base64 编码
我目前在 php 中使用相同的系统并且它工作正常:
$enc_request = base64_encode(openssl_encrypt(json_encode($request_params), "rc4", $this->_app_key));
但是当我在java中使用相同的系统时,结果却不如预期。这是我的代码:
//json encoding
JSONObject obj = new JSONObject();
obj.put("email", username);
obj.put("password", password);
obj.put("action", "login");
//function to encode base64
private String getBase64Encoded(String encryptedJsonString)
{
byte[] encoded = Base64.encodeBase64(encryptedJsonString.getBytes());
String encodedString = new String(encoded);
return encodedString;
}
//function to encrypt in RC4
private String getRC4EncryptedString2(String string, String key) throws Exception
{
Cipher cipher = Cipher.getInstance("RC4");
SecretKeySpec rc4Key = new SecretKeySpec(key.getBytes(), "RC4");
cipher.init(Cipher.ENCRYPT_MODE, rc4Key);
byte[] cipherText = cipher.update(string.getBytes());
return new String(cipherText);
}
我能够识别出问题,直到 RC4 加密没有返回与 php 版本相同的结果。
我已经为此奋斗了2天。我希望我没有错过任何愚蠢的事情,因为这应该是直截了当的。
谢谢