首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同应用程序域上的加密字符串更改

不同应用程序域上的加密字符串更改
EN

Stack Overflow用户
提问于 2012-05-04 19:15:06
回答 2查看 172关注 0票数 1

以下加密和解密算法通过powershell在sharepoint应用程序页面中调用:

代码语言:javascript
复制
    public static string Encrypt(string dataToEncrypt, string password, string salt)
    {
        AesManaged aes = null;
        MemoryStream memoryStream = null;
        CryptoStream cryptoStream = null;

        try
        {
            Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes(salt), 10000);

            aes = new AesManaged();
            aes.Key = rfc2898.GetBytes(32);
            aes.IV = rfc2898.GetBytes(16);

            memoryStream = new MemoryStream();
            cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(), CryptoStreamMode.Write);

            byte[] data = Encoding.UTF8.GetBytes(dataToEncrypt);
            cryptoStream.Write(data, 0, data.Length);
            cryptoStream.FlushFinalBlock();

            return Convert.ToBase64String(memoryStream.ToArray());
        }
        finally
        {
            if (cryptoStream != null)
                cryptoStream.Close();

            if (memoryStream != null)
                memoryStream.Close();

            if (aes != null)
                aes.Clear();
        }
    }

为什么加密字符串会发生变化?是关于应用程序域的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-10 04:28:13

加密字符串因$字符的不同而不同。在通过powershell调用函数时,应该对$进行转义。

票数 1
EN

Stack Overflow用户

发布于 2012-05-04 21:41:50

当我使用相同的数据、密码和盐运行问题代码时,每次都会产生相同的结果。您应该确保dataToEncrypt和Salt每次都是相同的,即使只有一个字节发生变化,其余的字节也会发生变化。

然而,对于语义安全来说,这并不是您想要的。您需要一个随机的盐,以使暴力破解密码变得更加困难,以及一个随机的非机密IV集,以便两个相同的明文不具有相同的密文。

以下是encrypting and decrypting string的最佳实践示例,在设计时使用了加密算法的安全功能。SimpleEncryptWithPassword类似于您正在做的事情,尽管在本例中派生密钥的迭代次数是可变的,并且出于性能原因,您可能希望对其进行硬编码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10447739

复制
相关文章

相似问题

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