/// <summary> /// 功能描述 解析数据推送请求,生成code>BodyObj</code>消息对象 </summary> /// <param name="body"> 数据推送请求body部分 </param> /// <param name="encrypted"> 表征是否为加密消息 </param> /// <returns> 生成的<code>BodyObj</code>消息对象 </returns> public static BodyObj resolveBody(String body, bool encrypted) { if (string.IsNullOrEmpty(body)) { body = ""; } JObject jsonMsg = JObject.Parse(body); var obj = new BodyObj(); obj.nonce = jsonMsg.GetValue("nonce").ToString(); obj.msgSignature = jsonMsg.GetValue("msg_signature").ToString(); if (encrypted) { if (jsonMsg.GetValue("enc_msg") == null) { return(null); } obj.msg = jsonMsg.GetValue("enc_msg"); obj.msgStr = obj.msg == null ? "" : obj.msg.ToString(); } else { if (jsonMsg.GetValue("msg") == null) { return(null); } obj.msg = jsonMsg.GetValue("msg"); obj.msgStr = JsonConvert.SerializeObject(obj.msg); } return(obj); }
public static String decryptMsg(BodyObj obj, String encodeKey) { try { return(CryptoUtil.AES_decrypt(obj.msgStr, encodeKey)); } catch (Exception ex) { Console.WriteLine("error:" + ex.Message); return("500"); } }
public static bool checkSignature(BodyObj obj, String token) { //计算接受到的消息的摘要 //token长度 + 8B随机字符串长度 + 消息长度 return(VerifySignature(obj.msgStr, obj.nonce, obj.msgSignature, token)); }