c# 自定义加密解密工具,避免MD5加密不可逆或者DES对称加密容易被破解问题。

技术文摘
0 539
admin
凯特云(xukai) 5 2021/3/31 11:50:41
编辑此贴 收藏

描述:-


不多说,直接上代码。。。↓↓↓↓↓↓↓↓↓↓↓↓↓↓

1、定义8位的加密秘钥

    /// <summary>
    /// 加密密钥(8位)
    /// </summary>
    public static string KEY_64 = "00000000";

2、定义8位的初始化向量

    /// <summary>
    /// 加密初始化向量(8位)
    /// </summary>
    public static string IV_64 = "88888888";

3、通过初始化向量与加密秘钥生成加密内容

    /// <summary>
    /// 加密
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public static string Encode(string data)
    {
        byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
        byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

        DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
        int i = cryptoProvider.KeySize;
        MemoryStream ms = new MemoryStream();
        CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

        StreamWriter sw = new StreamWriter(cst);
        sw.Write(data);
        sw.Flush();
        cst.FlushFinalBlock();
        sw.Flush();
        return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length).Replace("=", "φ");

    }

4、通过初始化向量与加密秘钥对加密内容进行解密

    /// <summary>
    /// 解密
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public static string Decode(string data)
    {
        try
        {
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

            byte[] byEnc;
            try
            {
                byEnc = Convert.FromBase64String(data.Replace("φ", "="));
            }
            catch
            {
                return null;
            }

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream(byEnc);
            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cst);
            return sr.ReadToEnd();
        }
        catch
        { return ""; }
    }

5、到这里就大功告成啦!

个人签名:己所不欲勿施于人

回帖
  • 消灭零回复
本周热议
html+css+jquery 实现超帅留言墙效果!超帅,不喜勿喷!附完整demo 6
c#如何集成控制Led屏,实现数据发送自动开机、关机等操作! 3
关于站点启用HTTPS访问的通知 1
非法访问资源ip地址公布 1
不用写一句sql的ORM框架,支持多种数据库 1
c# winform 身份证信息读取 0
c#如何获取电脑mac地址,超简单! 0
批量检测指定ip某些端口是否开启,用来做什么自己想吧!!! 0
c# 实现文件下载功能,带下载进度条,可用到软件的自动更新中 0
winform程序如何做到开机自动启动 0
热门资讯
【每日一习话】把事业放在心上 把责任扛在肩上 241 
看图猜成语:明明很简单,是不是大意了 226 
第一观察 | 从两会“如期”召开看百年大党的执政能力 211 
《奇葩说》第七季总决赛,肖骁用不是自己风格的夺冠后,获得表扬 197 
玖月奇迹王小玮近照曝光!穿紧身裤秀出小鸟腿,皮肤白到发光 190 
联播+ | 谋定而动 习近平引领京津冀携手下好“一盘棋” 190 
美媒承认搞错了,但已经来不及了 187 
强力堆料,几乎没有短板、铭瑄iCraft B550M电竞之心主板评测 187 
广东一男子离职索赔270万,公司:你月薪才25万 186 
成人体验馆被封,客人一天点3个娃娃:男人的孤独,谁能懂? 182 
王霜首次回应结束留洋原因:不因贾秀全 只因这3个字 174 
美日共同发表"对中国措辞最强硬"声明 外交部撂重话 173 
扒女明星每日穿搭,千元Coach这样搭,千元CHANEL这样买! 169 
“波塞冬”无法拦截?俄军事专家:只能在发射前攻击它的母艇 134 
孙一宁明明哪也没露,却让人浮想联翩!难怪王思聪放下身段追四年 118