//
文件: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> " );
// 测试
// 加载数据
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();
}
}
... {
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;
}
}
}
... {
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;
}
}
}