//文件: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;
}
}
}
本文介绍了一个使用自定义哈希表进行数据签名及加密解密的过程。通过实例展示了如何构造哈希表、生成数据签名、加密数据、验证签名及还原原始数据。
1814

被折叠的 条评论
为什么被折叠?



