写了一个简单的加密算法,大家评一下怎么样

简易异或16进制加密算法
本文介绍了一种基于异或运算和16进制编码的简单加密算法实现,通过将明文与固定密钥进行异或操作并转换为16进制字符串来完成加密过程,解密则逆向执行相同步骤。

写了一个简单的加密算法,大家评一下怎么样,一般应用安全性够了吧?

 算法就是 定一个密钥, 然后把要加密的字符串和密钥都转化成byte数组,然后异或,得到的结果再编码成16进制数组

解密就反之

 

    /// <summary>
    
/// 异或+16进制加密/解密算法
    
/// </summary>
    public class XorHex
    {
        
private const string KEY = "MyKey";            // 密钥

        
/// <summary>
        
/// 加密
        
/// </summary>
        
/// <param name="txt"></param>
        
/// <returns></returns>
        public static string Encrypt( string txt )
        {
            StringBuilder sb 
= new StringBuilder();
            
byte[] bs = System.Text.Encoding.Default.GetBytes( txt );        // 原字符串转换成字节数组
            byte[] keys = System.Text.Encoding.Default.GetBytes( KEY );        // 密钥转换成字节数组

            
// 异或
            forint i = 0; i < bs.Length; i++ )
            {
                bs[i] 
= (byte)( bs[i] ^ keys[i%keys.Length] );
            }

            
// 编码成16进制数组
            foreachbyte b in bs )
            {
                sb.AppendFormat( 
"{0:x2}", b );
            }
            
return sb.ToString();
        }

        
/// <summary>
        
/// 解密
        
/// </summary>
        
/// <param name="txt"></param>
        
/// <returns></returns>
        public static string Decrypt( string txt )
        {
            
int len = txt.Length;
            
byte[] bs = new byte[len/2];

            
// 16进制数组转换会byte数组
            forint i = 0; i < len / 2; i++ )
            {
                bs[i] 
= (byte)(Convert.ToInt32( txt.Substring( i * 22 ), 16 ) );
            }

            
byte[] keys = System.Text.Encoding.Default.GetBytes( KEY );        // 密钥转换成字节数组
            
            
// 异或
            forint i = 0; i < bs.Length; i++ )
            {
                bs[i] 
= (byte)( bs[i] ^ keys[i % keys.Length] );
            }

            
// byte数组还原成字符串
            return System.Text.Encoding.Default.GetString( bs );
        }

    }

 

转载于:https://www.cnblogs.com/asuka08/archive/2009/02/11/1388455.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值