一个简单的c#加密,签名,验签,解密算法.(1)

  // 文件: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  +   "
" );
        Response.Write(
"
" );

        
// 签名
         string  b  =  CodeSign.AddSign(str);
        Response.Write(
" 签名: "   +  b  +   "
" );
        Response.Write(
"
" );
        
// 加密
         string  a  =  MiniDes.Encrypt(b);
        Response.Write(
" 加密: "   +  a  +   "
" );
        Response.Write(
"
" );


        Response.Write(
"

…………………………………………………………………………………………………………
"   +   "
" );
        Response.Write(
" 发送…………>接收 "   +   "
" );
        Response.Write(
" ………………………………………………………………………………………………………… "   +   "


" );


        
// 解密
         string  d  =  MiniDes.Decrypt(a);
        Response.Write(
" 解密: "   +  d  +   "
" );
        Response.Write(
"
" );
        
// 验签
         bool  c  =  CodeSign.CheckSign(d);
        Response.Write(
" 验签: "   +  c  +   "
" );
        Response.Write(
"
" );
        
// 验签正确,取原文
         string  f  =  CodeSign.GetData(d);
        Response.Write(
" 原文: "   +  str  +   "
" );
        Response.Write(
"
" );

        
// 加载数据并输出
        ParamHashtable mymh1  =   new  ParamHashtable();
        mymh1.Add(f);
        
for  ( int  i  =   0 ; i  <  mymh1.Length; i ++ )
            Response.Write(mymh1.Name(i) 
+   " : "   +  mymh1[i]  +   "
" );

 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;
            }

        }

    }

 

 

你可能感兴趣的:(解密,加密,算法,c#,string,object)