gpt4 book ai didi

c# - SQL Server 中的 EncryptByPassPhrase 和 C# 中的 Triple DES 解密

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:46 26 4
gpt4 key购买 nike

上下文:

  • 数据存储在 SQL Server 中。一些字段使用 EncryptWithPassPhrase 加密

更新 my_table set my_field = EncryptByPassPhrase('012345678901234567890123','some value')

  • 使用 NHibernate 获取数据。使用拦截器对加密数据进行解码

    public static string Decrypt(byte[] toDecryptArray, string key)
    {
    byte[] keyArray;

    keyArray = UTF8Encoding.UTF8.GetBytes(key);

    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    tdes.Key = keyArray;
    tdes.Mode = CipherMode.ECB;
    tdes.Padding = PaddingMode.PKCS7;

    ICryptoTransform cTransform = tdes.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length);

    return UTF8Encoding.UTF8.GetString(resultArray);
    }

它在 cTransform.TransformFinalBlock 上失败,提示“要解密的数据长度无效”。

我的代码有什么问题?数据使用相同的 key 加密/解密(012345678901234567980123)。

最佳答案

我没有找到如何通过 C# 代码解密使用 T-SQL 函数 EncryptByPassPhrase 加密的内容。

但 SQL Server 2005 允许您创建 C# 程序集并将其加载到 SQL Server 中,然后构建存储过程或函数或您的 C# 方法。因此,我使用应用程序和 SQL Server 之间的共享代码创建了“我的”EncryptByPassPhrase 函数,以便我可以在双方进行加密/解密。

关于c# - SQL Server 中的 EncryptByPassPhrase 和 C# 中的 Triple DES 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com