C# 如何在不添加额外\参数的情况下传递加密密码?

C# 如何在不添加额外\参数的情况下传递加密密码?,c#,android,encryption,C#,Android,Encryption,我在Android java函数中有加密密码函数,在C#side中有解密函数。 我的问题是当我加密密码时 密码是 No8ANfBX/0GAWJnF4v0bQwf/4UIJ7QY7ROPFRB0xMQ= 当我通过RESTAPI传递这个参数时, 我的密码改为- No8ANfBX/0GAWJnF4v0bQwf\/4UiJ7qY7rOPfrfB0XMQ= 所以在服务器上解密时,密码是不一样的。 我的参数传递代码是 public JSONObject A(String userName, String

我在Android java函数中有加密密码函数,在C#side中有解密函数。 我的问题是当我加密密码时

密码是
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中尝试这个#