首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  其它技术  |  加密解密  


.net下DES加密解密算法的封装


原作者:不详    源出处:CSDN   发布者:施昌权    发布类型:转载    发布日期:2008-12-02


    /// <summary>
    /// DES加密
    /// </summary>
    /// <param name="toEncrypt">被加密的字符串</param>
    /// <returns>加密后字符串</returns>
    public string DESEncrypt(string toEncrypt)
    {
        //定义DES加密服务提供类
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        //加密字符串转换为byte数组
        byte[] inputByte = ASCIIEncoding.ASCII.GetBytes(toEncrypt);
        //加密密匙转化为byte数组
        byte[] key = Convert.FromBase64String(DESKey);
        des.Key = key;
        des.IV = key;
        //创建其支持存储区为内存的流
        MemoryStream ms = new MemoryStream();
        //定义将数据流链接到加密转换的流
        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

        cs.Write(inputByte, 0, inputByte.Length);
        cs.FlushFinalBlock();
        StringBuilder ret = new StringBuilder();
        foreach (byte b in ms.ToArray())
        {
            //向可变字符串追加转换成十六进制数字符串的加密后byte数组。
            ret.AppendFormat("{0:X2}", b);
        }
        return ret.ToString();
    }

    /// <summary>
    /// DES解密
    /// </summary>
    /// <param name="toDecrypt">被解密的加密字符串</param>
    /// <returns>解密后字符串</returns>
    public string DESDecrypt(string toDecrypt)
    {
        //定义DES加密解密服务提供类
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        //加密密匙转化为byte数组
        byte[] key = Convert.FromBase64String(DESKey);
        des.Key = key;
        des.IV = key;
        //将被解密的字符串每两个字符以十六进制解析为byte类型,组成byte数组
        int length = (toDecrypt.Length / 2);
        byte[] inputByte = new byte[length];
        for (int index = 0; index < length; index++)
        {
            string substring = toDecrypt.Substring(index * 2, 2);
            inputByte[index] = Convert.ToByte(substring, 16);
        }
        //创建其支持存储区为内存的流
        MemoryStream ms = new MemoryStream();
        //定义将数据流链接到加密转换的流
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
        cs.Write(inputByte, 0, inputByte.Length);
        cs.FlushFinalBlock();

        return ASCIIEncoding.ASCII.GetString((ms.ToArray()));
    }


关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号