实现特定随机数的加密和解密

public class RondomEncrypt

    {

        //定义加密用户密码所用的伪随机数

        private static string randStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";

 

        #region 使用伪随机数加密后字符串

        /// <summary>

        /// 使用伪随机数加密字符串

        /// </summary>

        /// <param name="str">字符串</param>

        /// <returns>加密后的字符串</returns>

        public static string EncryptStr(string str)

        {

            byte[] btData = Encoding.Default.GetBytes(str);

            int j, k, m;

            int len = randStr.Length;

            StringBuilder sb = new StringBuilder();

            Random rand = new Random();

            for (int i = 0; i < btData.Length; i++)

            {

                j = (byte)rand.Next(6);

                btData[i] = (byte)((int)btData[i] ^ j);

                k = (int)btData[i] % len;

                m = (int)btData[i] / len;

                m = m * 8 + j;

                sb.Append(randStr.Substring(k, 1) + randStr.Substring(m, 1));

            }

            return sb.ToString();

        }

        #endregion

 

        #region 解密字符串

        /// <summary>

        /// 解密字符串

        /// </summary>

        /// <param name="str">经过加密的字符串</param>

        /// <returns>解密后的字符串</returns>

        public static string DecryptStr(string str)

        {

            try

            {

                int j, k, m, n = 0;

                int len = randStr.Length;

                byte[] btData = new byte[str.Length / 2];

                for (int i = 0; i < str.Length; i += 2)

                {

                    k = randStr.IndexOf(str[i]);

                    m = randStr.IndexOf(str[i + 1]);

                    j = m / 8;

                    m = m - j * 8;

                    btData[n] = (byte)(j * len + k);

                    btData[n] = (byte)((int)btData[n] ^ m);

                    n++;

                }

                return Encoding.Default.GetString(btData);

            }

            catch { return ""; }

        }

        #endregion

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值