C# 如何在不添加额外\参数的情况下传递加密密码?
我在Android java函数中有加密密码函数,在C#side中有解密函数。 我的问题是当我加密密码时 密码是C# 如何在不添加额外\参数的情况下传递加密密码?,c#,android,encryption,C#,Android,Encryption,我在Android java函数中有加密密码函数,在C#side中有解密函数。 我的问题是当我加密密码时 密码是 No8ANfBX/0GAWJnF4v0bQwf/4UIJ7QY7ROPFRB0xMQ= 当我通过RESTAPI传递这个参数时, 我的密码改为- No8ANfBX/0GAWJnF4v0bQwf\/4UiJ7qY7rOPfrfB0XMQ= 所以在服务器上解密时,密码是不一样的。 我的参数传递代码是 public JSONObject A(String userName, String
No8ANfBX/0GAWJnF4v0bQwf/4UIJ7QY7ROPFRB0xMQ= 当我通过RESTAPI传递这个参数时, 我的密码改为- No8ANfBX/0GAWJnF4v0bQwf\/4UiJ7qY7rOPfrfB0XMQ= 所以在服务器上解密时,密码是不一样的。 我的参数传递代码是
public JSONObject A(String userName, String passWord, String version) throws Exception {
JSONObject result = null;
JSONObject o = new JSONObject();
JSONObject p = new JSONObject();
try {
o.put("interface", "AA");
o.put("method", "A");
p.put("userName", mapObject(userName));
p.put("passWord", mapObject(passWord));
p.put("version", mapObject(version));
o.put("parameters", p);
Log.e("Pass",String.valueOf(passWord));
Log.e("Pass",String.valueOf(mapObject(passWord)));
String s = o.toString();
Log.e("Params", String.valueOf(s));
String r = load(s);
Log.e("Params", String.valueOf(r));
result = new JSONObject(r);
} catch (Exception e) {
Log.e("Error is", String.valueOf(e));
}
return result;
}
我如何才能更改为不在参数中添加额外的\n?您需要使用UTF-8格式传递密码,并使用UTF-8从服务器端解密
所以它就像
URLEncoder.encode(“No8ANfBX/0GAWJnF4v0bQwf/4UiJ7qY7rOPfrfB0XMQ=,“utf-8”)
它只是转义特殊字符/
。对于反向条``,只需从服务器中的字符串中删除所有反向条即可。清理字符串。是的,我如何才能从android java params pass不从No8ANfBX/0GAWJnF4v0bQwf/4uij7qy7ropffb0xmq=更改为No8ANfBX\/0GAWJnF4v0bQwf\/4uij7qy7ropffb0xmq=是否存在'\\\\'
,或者您只是在调试器中看到了它?这里有一些东西需要解包,我没有看到足够的信息所以首先,您所说的密码似乎已经加密,并且是base64编码的。我这样说是因为当我对它进行base64解码时,我得到了一个很好的随机字节长度(32字节)。第二,这个“服务器解密密码”来自哪里?那密码在哪里?你不会用它吗?直接在上面使用,或者如果您真的想/需要使用urlencoder
,您可以传递Encoding.UTF8
,而不是“utf-8”
。这不是与UTF8相关的问题。@Pal请在C中尝试这个#