相关疑难解决方法(0)

在C#中复制T-SQL DecryptByPassPhrase

我想创建一个C#类来解密使用T-SQL的EncryptByPassPhrase加密的字节数组.(是的,我知道我可以在SQL Server中解密,但我需要的是能够在数据库层和中间层中等效加密/解密.)

据我所知,SQL Server的EncryptByPassPhrase和DecryptByPassPhrase使用TripleDES对称密钥算法.但是,我不清楚IV应该模拟SQL Server的密码学.我可以使用TripleDESCryptoServiceProvider类加密/解密,但是我找不到正确的key和IV实现来复制SQL Server正在做的事情.

有没有人做过类似的事情?谢谢!

c# sql encryption 3des

9
推荐指数
1
解决办法
4404
查看次数

C#从SQL Server EncryptByPassPhrase解密字节吗?

在C#中复制T-SQL DecryptByPassPhrase,我无法获得与MSSQL简单的加密在C#descrypt。某些列中的加密值是必需的,因为该表会定期导出到Excel和Access中,因此简单的加密足以“阻止”值,而无需开发人员去(重新)执行视图等工作。

在SQL Server 2012中:

    select EncryptByPassPhrase( N'hello' , N'world'  ) 
-- returns 0x01000000AA959FFB3A8E4B06B734051437E198C8B72000A058ACE91D617123DA102287EB
Run Code Online (Sandbox Code Playgroud)

在C#中:

byte[] buf = System.Text.Encoding.UTF8.GetBytes( "0x010000003A95FA870ED699A5F90D33C2BF01491D9132F61BA162998E96F37117AF5DA0905D51EB6FB298EC88" );
// bytes emitted from the database
var cp = new TripleDESCryptoServiceProvider();
var m = new MemoryStream(buf);
cp.Key = System.Text.Encoding.UTF8.GetBytes( "hello" ); // throws
cp.IV = System.Text.Encoding.UTF8.GetBytes( "hello" ); // throws
CryptoStream cs = new CryptoStream( m , cp.CreateDecryptor( cp.Key , cp.IV ) , CryptoStreamMode.Read );
StreamReader reader = new StreamReader( cs );
string plainText = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

工作的C#代码应该是什么样的? …

sql-server encryption des cryptostream

4
推荐指数
2
解决办法
4803
查看次数

标签 统计

encryption ×2

3des ×1

c# ×1

cryptostream ×1

des ×1

sql ×1

sql-server ×1