一个简单的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  +   " <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;
            }

        }

    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值