Java翻译成C#

吉普赛的歌 2021-03-08 04:14:58
public class SignUtil {
public static String sign(){
Map<String, Object> params = new HashMap<>();
params.put("key", key);
params.put("secret", secret);
params.put("userMobile", userMobile);
params.put("refereeMobile", refereeMobile);
StringBuilder builder = new StringBuilder();
Set<String> keysSet = params.keySet();
Object[] keys = keysSet.toArray();
Arrays.sort(keys);
boolean first = true;
for (Object key : keys) {
if (first) {
first = false;
} else {
builder.append("&");
}
builder.append(key).append("=");
Object value = params.get(key);
String str = "";
if (value != null) {
str = String.valueOf(value);
}
builder.append(str);
}
return DigestUtil.md5Hex(builder.toString()).toUpperCase();
}
}


哪位大神熟悉2种语言的,不胜感激
...全文
102 点赞 收藏 6
写回复
6 条回复
吉普赛的歌 03月09日
引用 5 楼 X-i-n 的回复:
我的代码不光不转码,还帮你排了序。
嗯, 大神的写法非常好,
回复 点赞
X-i-n 03月08日
我的代码不光不转码,还帮你排了序。
回复 点赞
吉普赛的歌 03月08日
引用 2 楼 wanghui0380 的回复:
无所谓,不需要翻译。 var content = new FormUrlEncodedContent(new Dictionary<string, string>() { {"ak", "65fc7ca4fc441d26f71bf3d691b278c2"}, {"deviceId", "537eb34be4b022b7fbe19471"} }); var b =await content.ReadAsStringAsync(); //这就是除了最后一句的所有功能 至于最后一句,只是进行md5计算,如果是要MD5, 你直接读成stream 或者 byte[]更简单点,MD5也是简单操作,我就不贴代码了
您这个非常巧妙, 但最终的结果对不上, 因为 ! 转码了。 有没有办法不转码的?
回复 点赞
吉普赛的歌 03月08日
基本看明白了, 也不需要各位费神了。 里面比较变态的是还按字母排了个序, 不过这个是死的, 手动把序排好就行。 还是谢谢各位,
回复 点赞
wanghui0380 03月08日
无所谓,不需要翻译。 var content = new FormUrlEncodedContent(new Dictionary<string, string>() { {"ak", "65fc7ca4fc441d26f71bf3d691b278c2"}, {"deviceId", "537eb34be4b022b7fbe19471"} }); var b =await content.ReadAsStringAsync(); //这就是除了最后一句的所有功能 至于最后一句,只是进行md5计算,如果是要MD5, 你直接读成stream 或者 byte[]更简单点,MD5也是简单操作,我就不贴代码了
回复 点赞
X-i-n 03月08日
不熟悉java,大概看了一下,就是一个将键值对做md5。 这个代码需要再确定的地方是拼接出的字符串转为byte[]的时候,用的是什么方法,我的代码里用了UTF8,实际情况下有可能是其它编码。

Dictionary<string, string> paras = new Dictionary<string, string> { { "key", key }, { "secret", secret }, { "userMobile", userMobile }, { "refereeMobile", refereeMobile } };
var result = string.Join("&", paras.Select(kv => $"{kv.Key}={kv.Value}").OrderBy(v => v));
result = BitConverter.ToString(((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(Encoding.UTF8.GetBytes(result))).Replace("-", "").ToUpper();
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告