(C#)用固定的字符集进行字符串加密的函数

这个函数是我从 VB 翻译过来的,加密后的字符串字符固定在字符集里面,可以用于很多地方:

/// <summary>
/// 加密字符串类
/// </summary>

public static class Encrypt
{
    
private const string mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";

    
/// <summary>
    
/// 字符串加密
    
/// </summary>
    
/// <param name="str">待加密的字符串</param>
    
/// <returns>加密后的字符串</returns>

    public static string EnCode(string str)
    
{
        
if (string.IsNullOrEmpty(str))
        
{
            
return "";
        }


        
byte[] buff = Encoding.Default.GetBytes(str);
        
int j, k, m;
        
int len = mstr.Length;
        StringBuilder sb 
= new StringBuilder();
        Random r 
= new Random();

        
for (int i = 0; i < buff.Length; i++)
        
{
            j 
= (byte)r.Next(6);
            buff[i] 
= (byte)((int)buff[i] ^ j);
            k 
= (int)buff[i] % len;
            m 
= (int)buff[i] / len;
            m 
= m * 8 + j;
            sb.Append(mstr.Substring(k, 
1+ mstr.Substring(m, 1));
        }


        
return sb.ToString();
    }


    
/// <summary>
    
/// 字符串解密
    
/// </summary>
    
/// <param name="str">待解密的字符串</param>
    
/// <returns>解密后的字符串</returns>

    public static string DeCode(string str)
    
{
        
if (string.IsNullOrEmpty(str))
        
{
            
return "";
        }


        
try
        
{
            
int j, k, m, n = 0;
            
int len = mstr.Length;
            
byte[] buff = new byte[str.Length / 2];

            
for (int i = 0; i < str.Length; i += 2)
            
{
                k 
= mstr.IndexOf(str[i]);
                m 
= mstr.IndexOf(str[i + 1]);
                j 
= m / 8;
                m 
= m - j * 8;
                buff[n] 
= (byte)(j * len + k);
                buff[n] 
= (byte)((int)buff[n] ^ m);
                n
++;
            }

            
return Encoding.Default.GetString(buff);
        }

        
catch
        
{
            
return "";
        }

    }


}

效果:



源代码:/Files/lemony/EnCode.rar
posted on 2007-04-30 15:20  柠檬隐士  阅读(3207)  评论(5编辑  收藏  举报