//文件:ParamHashtable.cs, MiniHashtable.cs, Key.cs, MiniDes.cs, CodeSign.cs//测试 //加载数据 ParamHashtable mymh = new ParamHashtable(); mymh.Add("jobPositionClass", 160); mymh.Add("jobPositionID", -1); mymh.Add("area", -1); mymh.Add("industry", -1); mymh.Add("keyword", "软件工程师@!@#$%^!·#¥%……软件工程师"); string str = mymh.GetData; Response.Write("原文:" + str + "<br>"); Response.Write("<hr>"); //签名 string b = CodeSign.AddSign(str); Response.Write("签名:" + b + "<br>"); Response.Write("<hr>"); //加密 string a = MiniDes.Encrypt(b); Response.Write("加密:" + a + "<br>"); Response.Write("<hr>"); Response.Write("<br><br><font color=red>…………………………………………………………………………………………………………" + "<br>"); Response.Write("发送…………>接收" + "<br>"); Response.Write("…………………………………………………………………………………………………………" + "<br><br><br></font>"); //解密 string d = MiniDes.Decrypt(a); Response.Write("解密:" + d + "<br>"); Response.Write("<hr>"); //验签 bool c = CodeSign.CheckSign(d); Response.Write("验签:" + c + "<br>"); Response.Write("<hr>"); //验签正确,取原文 string f = CodeSign.GetData(d); Response.Write("原文:" + str + "<br>"); Response.Write("<hr>"); //加载数据并输出 ParamHashtable mymh1 = new ParamHashtable(); mymh1.Add(f); for (int i = 0; i < mymh1.Length; i++) Response.Write(mymh1.Name(i) + ":" + mymh1[i] + "<br>"); MiniHashtable.cs public class MiniHashtable ...{ struct StructNameValue ...{ public Object itemName; public Object itemValue; public void SetValue(Object objName, Object objValue) ...{ itemName = objName; itemValue = objValue; } } private ArrayList m_alNV; public MiniHashtable() ...{ m_alNV = new ArrayList(); } public void Add(Object objName, Object objValue) ...{ StructNameValue snvItem = new StructNameValue(); snvItem.SetValue(objName, objValue); m_alNV.Add(snvItem); } public Object this[Object objName] ...{ get ...{ for (int i = 0; i < m_alNV.Count; i++) ...{ StructNameValue snvItem = (StructNameValue)m_alNV[i]; if (snvItem.itemName.Equals(objName)) return snvItem.itemValue; } return null; } } public Object this[int iIndex] ...{ get ...{ if (iIndex < m_alNV.Count) ...{ StructNameValue snvItem = (StructNameValue)m_alNV[iIndex]; return snvItem.itemValue; } else ...{ return null; } } } public Object Name(int iIndex) ...{ if (iIndex < m_alNV.Count) ...{ StructNameValue snvItem = (StructNameValue)m_alNV[iIndex]; return snvItem.itemName; } else ...{ return null; } } public int Length ...{ get ...{ return m_alNV.Count; } } public void Clear() ...{ m_alNV.Clear(); } } ParamHashtable.cs public class ParamHashtable : MiniHashtable ...{ public ParamHashtable() ...{ } public string GetData ...{ get ...{ string m_tempStr = ""; for (int i = 0; i < base.Length; i++) ...{ if (i < base.Length - 1) m_tempStr += base.Name(i) + "=" + base[i] + "&"; else m_tempStr += base.Name(i) + "=" + base[i]; } return m_tempStr; } } public void Add(string addHashTableStr) ...{ base.Clear(); string[] m_strSplit = addHashTableStr.Split(new char[] ...{ '=', '&' }, StringSplitOptions.None); for (int i = 0; i < m_strSplit.Length - 1; i++) ...{ base.Add(m_strSplit[i], m_strSplit[i + 1]); i += 1; } } }