简单的不用系统函数的加密解密函数,支持中文

来源:互联网 发布:pl sql developer教程 编辑:程序博客网 时间:2024/06/02 06:37

using System;
using System.Collections.Generic;
using System.Text;

namespace TestSilverlight
{
    /********************************************************************************************************
         * 公共类(加解密)
         * Copyright (C) 2008-2009 By 石家庄云天信息技术有限公司
         * songjh20080616(创建标识)

         * 修改标识
         * 修改描述

         * 修改标识
         * 修改描述
        *********************************************************************************************************/

    public class PassWord
    {
        private PassWord()
        {
 
        }

        public static byte[] DecryptByte(byte[] dd, string key)
        {
            return ASCIIEncoding.Default.GetBytes(Decrypt(ASCIIEncoding.Default.GetString(dd), key));
        }

        public static byte[] EncryptByte(byte[] dd, string key)
        {
            return ASCIIEncoding.Default.GetBytes(Encrypt(ASCIIEncoding.Default.GetString(dd), key));
        }

        /// <summary>
        /// 解密程序
        /// </summary>
        /// <param name="dd">加密的密码</param>
        /// <returns>解密后的密码</returns>
        public static string Decrypt(string dd,string key)
        {
            byte[] encbuff = System.Text.Encoding.UTF8.GetBytes(source);
            string dd = Convert.ToBase64String(encbuff);

            string vkey = key;   //
            int vkeylen = vkey.Length;
            int vKeyPos = 0;
            int vSrcPos = 0;
            int vSrcAsc = 0;
            int vTmpSrcAsc = 0;
            string vDest = "";
            string ff = dd.Substring(0, 2);
            int ddddd = Convert.ToInt32(ff, 16);
            string fff = Convert.ToString(ddddd, 10);
            int vOffset = Convert.ToInt32(fff);

            vSrcPos = 2;
            while (vSrcPos < dd.Length)
            {
                int eee = Convert.ToInt32(dd.Substring(vSrcPos, 2), 16);

                vSrcAsc = Convert.ToInt32(Convert.ToString(eee, 10));
                if (vKeyPos < vkeylen)
                {
                    vKeyPos = vKeyPos + 1;
                }
                else
                {
                    vKeyPos = 1;
                }
                char ddddff = (vkey[vKeyPos - 1]);
                //vKeyPos = vKeyPos - 1;
                vTmpSrcAsc = vSrcAsc ^ (int)(vkey[vKeyPos - 1]);
                if (vTmpSrcAsc <= vOffset)
                {
                    vTmpSrcAsc = 255 + vTmpSrcAsc - vOffset;
                }
                else
                {
                    vTmpSrcAsc = vTmpSrcAsc - vOffset;
                }

                vDest = vDest + (char)(vTmpSrcAsc);
                vOffset = vSrcAsc;
                vSrcPos = vSrcPos + 2;
            }
            byte[] decbuff = Convert.FromBase64String(vDest);
            return System.Text.Encoding.UTF8.GetString(decbuff);
        }

        /// <summary>
        /// 加密程序
        /// </summary>
        /// <param name="dd">要加密的字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt(string source, string key)
        {
            byte[] encbuff = System.Text.Encoding.UTF8.GetBytes(source);
            string dd = Convert.ToBase64String(encbuff);

            string vkey = key;       //"zhangzengbao"
            int vkeylen = vkey.Length;
            int vKeyPos = 0;
            int vSrcAsc = 0;
            int vRange = 256;
            int voffset = 0;
            string vDest = "";
            Random ro = new Random();
            voffset = ro.Next(vRange);
            //voffset = ro.Next(17, 256);

            vDest = Convert.ToString(voffset, 16);
            if (vDest.Length < 2)
            {
                vDest = "0" + vDest;
            }
            for (int i = 0; i < dd.Length; i++)
            {
                //byte[] B = Encoding.ASCII.GetBytes(a);
                //  byte[] b = Encoding.ASCII.GetBytes(dd[i].ToString());
                //  int bb =(int) b[0];
                vSrcAsc = ((int)dd[i] + voffset) % 255;//求模
                // vSrcAsc = (bb + voffset) % 255;
                if (vKeyPos < vkeylen)
                {
                    vKeyPos = vKeyPos + 1;
                }
                else
                {
                    vKeyPos = 1;
                }

                vRange = (int)(vkey[vKeyPos - 1]);
                //byte[] c = Encoding.ASCII.GetBytes(vkey[vKeyPos - 1].ToString());
                // int cc = (int)c[0];
                //vRange = cc;
                vSrcAsc = vSrcAsc ^ vRange;
                string v1 = Convert.ToString(vSrcAsc, 16);
                if (v1.Length < 2)
                {
                    v1 = "0" + v1;
                }
                vDest = vDest + v1;

                voffset = vSrcAsc;

            }
            vDest = vDest.ToUpper();

            return vDest;
        }
    }
}

 

////
//简单的使用系统加密解密函数实现的加密解密函数
//

 

//using System;
//using System.Text;
//using System.Globalization;
//using System.Security.Cryptography;
//using System.Windows.Forms;

//namespace TestSilverlight
//{
//    public class TestEncrypt
//    {
//        /// <summary>
//        /// 构造方法
//        /// </summary>
//        public TestEncrypt()
//        {
//        }

//        /// <summary>
//        /// 使用缺省密钥字符串加密
//        /// </summary>
//        /// <param name="original">明文</param>
//        /// <returns>密文</returns>
//        public static string Encrypt(string original)
//        {
//            return Encrypt(original,"JASONHEUNG");
//        }

//        /// <summary>
//        /// 使用缺省密钥解密
//        /// </summary>
//        /// <param name="original">密文</param>
//        /// <returns>明文</returns>
//        public static string Decrypt(string original)
//        {
//            return Decrypt(original,"JASONHEUNG",System.Text.Encoding.Default);
//        }

//        /// <summary>
//        /// 使用给定密钥解密
//        /// </summary>
//        /// <param name="original">密文</param>
//        /// <param name="key">密钥</param>
//        /// <returns>明文</returns>
//        public static string Decrypt(string original, string key)
//        {
//            return Decrypt(original,key,System.Text.Encoding.Default);
//        }

//        /// <summary>
//        /// 使用缺省密钥解密,返回指定编码方式明文
//        /// </summary>
//        /// <param name="original">密文</param>
//        /// <param name="encoding">编码方式</param>
//        /// <returns>明文</returns>
//        public static string Decrypt(string original,Encoding encoding)
//        {
//            return Decrypt(original,"JASONHEUNG",encoding);
//        }

//        /// <summary>
//        /// 使用给定密钥加密
//        /// </summary>
//        /// <param name="original">原始文字</param>
//        /// <param name="key">密钥</param>
//        /// <param name="encoding">字符编码方案</param>
//        /// <returns>密文</returns>
//        public static string Encrypt(string original, string key)
//        {
//            byte[] buff = System.Text.Encoding.Default.GetBytes(original);
//            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
//            return Convert.ToBase64String(Encrypt(buff,kb));
//        }

//        /// <summary>
//        /// 使用给定密钥解密
//        /// </summary>
//        /// <param name="encrypted">密文</param>
//        /// <param name="key">密钥</param>
//        /// <param name="encoding">字符编码方案</param>
//        /// <returns>明文</returns>
//        public static string Decrypt(string encrypted, string key,Encoding encoding)
//        {
//            byte[] buff = Convert.FromBase64String(encrypted);
//            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
//            return encoding.GetString(Decrypt(buff,kb));
//        }

//        /// <summary>
//        /// 生成MD5摘要
//        /// </summary>
//        /// <param name="original">数据源</param>
//        /// <returns>摘要</returns>
//        public static byte[] MakeMD5(byte[] original)
//        {
//            MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
//            byte[] keyhash = hashmd5.ComputeHash(original);
//            hashmd5 = null;
//            return keyhash;
//        }

//        /// <summary>
//        /// 使用给定密钥加密
//        /// </summary>
//        /// <param name="original">明文</param>
//        /// <param name="key">密钥</param>
//        /// <returns>密文</returns>
//        public static byte[] Encrypt(byte[] original, byte[] key)
//        {
//            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
//            des.Key =  MakeMD5(key);
//            des.Mode = CipherMode.ECB;

//            return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
//        }

//        /// <summary>
//        /// 使用给定密钥解密数据
//        /// </summary>
//        /// <param name="encrypted">密文</param>
//        /// <param name="key">密钥</param>
//        /// <returns>明文</returns>
//        public static byte[] Decrypt(byte[] encrypted, byte[] key)
//        {
//            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
//            des.Key =  MakeMD5(key);
//            des.Mode = CipherMode.ECB;
//            return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
//        }

//        /// <summary>
//        /// 使用缺省密钥加密
//        /// </summary>
//        /// <param name="original">原始数据</param>
//        /// <param name="key">密钥</param>
//        /// <returns>密文</returns>
//        public static byte[] Encrypt(byte[] original)
//        {
//            byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
//            return Encrypt(original,key);
//        }

//        /// <summary>
//        /// 使用缺省密钥解密数据
//        /// </summary>
//        /// <param name="encrypted">密文</param>
//        /// <param name="key">密钥</param>
//        /// <returns>明文</returns>
//        public static byte[] Decrypt(byte[] encrypted)
//        {
//            byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
//            return Decrypt(encrypted,key);
//        }
//    }
//}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 把眼镜坐坏了怎么办 梦见眼镜腿掉了怎么办 眼镜的腿掉了怎么办 眼镜腿的螺丝掉了怎么办 爱大爱眼镜掉腿了怎么办 合金眼镜腿断了怎么办 手关节复位h疼痛怎么办 我叫mt红色卡牌怎么办 星盟冲突qq登录怎么办 汽车雷达下雨一直响怎么办 火山小视频封火力怎么办 电脑被当成矿机怎么办 哥华有线机顶盒反应慢怎么办 电脑绣花机编码器坏了怎么办? 伺服电机开起没有力怎么办 西门子冰箱排水孔堵塞怎么办 数控车床西门子系统卡顿怎么办 手机系统不支持多屏互动怎么办 伺服驱动器系统错误报警怎么办 防雷接地电阻不符合规范怎么办 微信支付风控了怎么办 伺服电机没有配原点开关怎么办 电脑自带游戏打不开怎么办 战地1更新很慢怎么办 客户端提示初始化控件失败怎么办 刺客信条兄弟会存档损坏怎么办 百度不小心点赞怎么办 c盘空间不够了怎么办 百度云打开压缩文件失败怎么办 电脑只有一个c盘怎么办 u盘文件删不了怎么办 在电脑上照片打不开乱码怎么办 win7电脑登录密码忘记了怎么办 三洋电视应用商店打不开怎么办 中兴手机应用商店打不开怎么办 绝地求生与服务器失去连接怎么办 战地4载入不进去怎么办 电脑软件无法找到入口怎么办 ipad的按键坏了怎么办 更新ios12软件闪退怎么办 设置虚拟服务器输入不了数字怎么办