none
C#的DES加密与C语言的加密解密互操作 RRS feed

  • 问题

  • 大家好,我用如下的C#代码对字符串进行加密,然后想用C语言再实现一次。希望二者加密出的数据是一样的,但是现在C#和C加密的结果不一样,C却能解密出C#加密出来的数据,C#解密不了C加密的内容。

          public static string Encrypt(string pToEncrypt, string sKey)
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                ////默认 CBC、PKCS7
                //des.Padding = PaddingMode.Zeros;
                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();
            }
    查了下资料,C#默认的DES加密模式用的CBC,PKCS7填充。有做过C#和C的DES加密互操作的,能否指点一下,帮忙看看C语言的程序有什么问题(C代码有点长,可私下交流)

    2015年4月9日 2:10

全部回复

  • 你好,

    看起来C#解密的代码似乎没什么问题,不过C加密过程未知的情况下整个过程显得就略不清楚了

    http://www.dotblogs.com.tw/jaigi/archive/2013/05/20/104563.aspx

    https://support.microsoft.com/zh-cn/kb/307010

    我对这方面本身也不太了解,建议你到C#去问这个问题,另外关于C的代码你可以去找一些C相关的论坛去询问,在.NET中文论坛熟悉C的应该没有专门处理C问题论坛的人多。



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年4月10日 7:40
    版主
  • 你好,

    看起来C#解密的代码似乎没什么问题,不过C加密过程未知的情况下整个过程显得就略不清楚了


    我对这方面本身也不太了解,建议你到C#去问这个问题,另外关于C的代码你可以去找一些C相关的论坛去询问,在.NET中文论坛熟悉C的应该没有专门处理C问题论坛的人多。



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click to participate the survey.

    谢谢您的回复。C#的加密解密程序都没问题,就是在和C的加密解密程序互相操作的时候,出现加密结果不一直以及无法互相解密。


    2015年4月17日 2:28