2 wbc3112762 wbc3112762 于 2017.09.14 00:26 提问

求大神写一个UnEncode

这里是一个加密的方法,求大神写一个解密方法。
public static string Encode(string pSource, string pKey)
{
bool flag;
string s2;

        StringBuilder stringBuilder = new StringBuilder();
        pKey = pKey.PadRight(8, '8');
        DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
        try
        {
            byte[] bArr1 = Encoding.ASCII.GetBytes(pKey);
            byte[] bArr2 = Encoding.ASCII.GetBytes(pKey);
            byte[] bArr3 = Encoding.UTF8.GetBytes(pSource);
            descryptoServiceProvider.Mode = CipherMode.CBC;
            descryptoServiceProvider.Key = bArr1;
            descryptoServiceProvider.IV = bArr2;
            string s1 = "";
            MemoryStream memoryStream = new MemoryStream();
            try
            {
                CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Write);
                try
                {
                    cryptoStream.Write(bArr3, 0, bArr3.Length);
                    cryptoStream.FlushFinalBlock();
                    s1 = Convert.ToBase64String(memoryStream.ToArray());
                }
                finally
                {
                    flag = cryptoStream == null;
                    if (!flag)
                        cryptoStream.Dispose();
                }
            }
            finally
            {
                flag = memoryStream == null;
                if (!flag)
                    memoryStream.Dispose();
            }
            s2 = s1;
        }
        finally
        {
            flag = descryptoServiceProvider == null;
            if (!flag)
                descryptoServiceProvider.Dispose();
        }
        return s2;
    }

3个回答

showbo
showbo   Ds   Rxr 2017.09.14 09:51
已采纳

des加密的吧,用下面的试试了

  /// <summary>
    /// DEC 解密过程
    /// </summary>
    /// <param name="pToDecrypt">被解密的字符串</param>
    /// <returns>返回被解密的字符串</returns>
    public static string Decrypt(string pToDecrypt)
    {
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Mode = CipherMode.CBC;

        byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
        for (int x = 0; x < pToDecrypt.Length / 2; x++)
        {
            int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
            inputByteArray[x] = (byte)i;
        }
                string deskey = pKey.PadRight(8, '8');
        des.Key = ASCIIEncoding.ASCII.GetBytes(deskey); //建立加密对象的密钥和偏移量,此值重要,不能修改
        des.IV = ASCIIEncoding.ASCII.GetBytes(deskey);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();

        //建立StringBuild对象,createDecrypt使用的是流对象,必须把解密后的文本变成流对象
        StringBuilder ret = new StringBuilder();

        return System.Text.Encoding.UTF8.GetString(ms.ToArray());
    }

之前这个对应的加密是这样的,和你的有点出入,不懂能否解密



    /// <summary>
    /// DEC 加密过程
    /// </summary>
    /// <param name="pToDecrypt">被解密的字符串</param>
    /// <returns>返回被解密的字符串</returns>
    public static string Encrypt(string pToEncrypt)
    {
                string deskey = pKey.PadRight(8, '8');

        //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        des.Key = ASCIIEncoding.ASCII.GetBytes(deskey); //建立加密对象的密钥和偏移量
        des.IV = ASCIIEncoding.ASCII.GetBytes(deskey);  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法

        byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);//把字符串放到byte数组中

        MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流 
        //定义将数据流链接到加密转换的流
        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();
        //上面已经完成了把加密后的结果放到内存中去

        StringBuilder ret = new StringBuilder();
        foreach (byte b in ms.ToArray())
        {
            ret.AppendFormat("{0:X2}", b);
        }
        ret.ToString();
        return ret.ToString();
    }
devmiao
devmiao   Ds   Rxr 2017.09.14 08:43

这个你可以根据算法自己写下。

wbc3112762
wbc3112762   2017.09.15 01:18

///
/// DEC 解密过程
///
/// 被解密的字符串
/// 返回被解密的字符串
public static string Decrypt(string pToDecrypt, string pKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = CipherMode.CBC;

        byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);

        string deskey = pKey.PadRight(8, '8');
        des.Key = ASCIIEncoding.ASCII.GetBytes(deskey); //建立加密对象的密钥和偏移量,此值重要,不能修改
        des.IV = ASCIIEncoding.ASCII.GetBytes(deskey);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();

        //建立StringBuild对象,createDecrypt使用的是流对象,必须把解密后的文本变成流对象
        StringBuilder ret = new StringBuilder();

        return System.Text.Encoding.UTF8.GetString(ms.ToArray());
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
奥特曼打怪兽
自己写的小游戏,但是未图形化。求大神帮助图形化。
基于MFC ppi计算器
新手自己写的ppi计算器,开发环境:vs2010 win8.1 ,求指导,求大神指导
不用循环计算1到100相加
public static void main(String[] args) throws Exception { System.out.println("计算结果:"+ sum(100)) ; //调用操作 } public static int sum(int num){ //定义方法用于求和操作 if(num == 1){ //判断是否是加到了最后一个数 return 1 ; }
易语言钓鱼源码
求大神买走 求大神买走 易语言钓鱼源码
URL encode编码和解码
URL encode 用于将字符串以 URL 编码,具体代码如下:+(NSString *)encodeString:(NSString *)unencodeString { NSString * encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocator
cgi之c语言 入门
CGI之C语言篇 来源: ChinaUnix博客  日期: 2008.06.18 15:57 (共有0条评论) 我要评论 为什么要进行CGI编程? <br /><br />在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的<br />内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者是一些别的什么。没有了CGI,WEB的世界就完全失去了它的交互性,所有的信<br />息都变成单向的了,而不能够有
新浪漫步者6.1
感觉很不好的一个软件 求更好的 有没有大神帮忙!
MIBAO求破解
这是一个密报,密码忘掉了,求大神破解下。
大神级SVG_demo
关于画矢量图(直线,折线,圆)和一个涵盖svg拖拽、窗口抖动等
大神的神级js代码
刚刚在做一个排序的问题,因为后台返回的是一次性返回的,而前台则需要根据类型来分类并且排序,类型也是在后台返回的数据中! 这样的话,就不好用返回的size来排序,然后尹大神出现了,用以下方法,一次搞定排序问题!    var  indexFlag = {};     //先定义一个数组对象    indexFlag[imgType] = (indexFlag[imgType] == u