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种语言的,不胜感激
...全文
266 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2021-03-09
  • 打赏
  • 举报
回复
引用 5 楼 X-i-n 的回复:
我的代码不光不转码,还帮你排了序。
嗯, 大神的写法非常好,
X-i-n 2021-03-08
  • 打赏
  • 举报
回复
我的代码不光不转码,还帮你排了序。
吉普赛的歌 2021-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也是简单操作,我就不贴代码了
您这个非常巧妙, 但最终的结果对不上, 因为 ! 转码了。 有没有办法不转码的?
吉普赛的歌 2021-03-08
  • 打赏
  • 举报
回复
基本看明白了, 也不需要各位费神了。 里面比较变态的是还按字母排了个序, 不过这个是死的, 手动把序排好就行。 还是谢谢各位,
wanghui0380 2021-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 2021-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();

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧