首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php5中加密,在windows 8.1和c#中使用aescbc解密

如何在php5中加密,在windows 8.1和c#中使用aescbc解密
EN

Stack Overflow用户
提问于 2015-02-23 12:08:38
回答 1查看 139关注 0票数 0

嗨,伙计们,我用AesCbc方法在一个字符串中加密了hello这个词。这是我的密码。

代码语言:javascript
复制
base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128,'1234567890123456',pkcs7_pad('hello', 16),MCRYPT_MODE_CBC))

结果是

代码语言:javascript
复制
67fHA+Z12z2jlwOLTBeCPA==

然后,我将这个结果发送到我的windows存储应用程序,这是我用来解密它的函数。

代码语言:javascript
复制
        public string AES_Decrypt(string input, string pass)
    {
        SymmetricKeyAlgorithmProvider SAP = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbc);
        CryptographicKey AES;
        HashAlgorithmProvider HAP = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);
        CryptographicHash Hash_AES = HAP.CreateHash();

        string decrypted = "";
        try
        {
            byte[] hash = new byte[32];
            Hash_AES.Append(CryptographicBuffer.CreateFromByteArray(System.Text.Encoding.UTF8.GetBytes(pass)));
            byte[] temp;
            CryptographicBuffer.CopyToByteArray(Hash_AES.GetValueAndReset(), out temp);

            Array.Copy(temp, 0, hash, 0, 16);
            Array.Copy(temp, 0, hash, 15, 16);

            AES = SAP.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(hash));

            IBuffer Buffer = CryptographicBuffer.DecodeFromBase64String(input);
            byte[] Decrypted;
            CryptographicBuffer.CopyToByteArray(CryptographicEngine.Decrypt(AES,Buffer,null), out Decrypted);
            decrypted = System.Text.Encoding.UTF8.GetString(Decrypted, 0, Decrypted.Length);

            return decrypted;
        }
        catch (Exception ex)
        {
            return null;
        }
    }

结果是

代码语言:javascript
复制
7��t�\a2H\0��g

当应该是“你好”的时候。那么我的代码哪里出错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 12:18:09

这个键没有在PHP代码中进行散列。所以,不要在C#中这样做:

代码语言:javascript
复制
AES = SAP.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(
    System.Text.Encoding.UTF8.GetBytes(pass)
));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28673487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档