Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C解密列级SQL加密值#_C#_Sql Server_Encryption_Cryptography_Simplemembership - Fatal编程技术网

C# 使用C解密列级SQL加密值#

C# 使用C解密列级SQL加密值#,c#,sql-server,encryption,cryptography,simplemembership,C#,Sql Server,Encryption,Cryptography,Simplemembership,我已经开始阅读和实验C语言中的加密和解密技术# 我已经使用以下链接中提供的信息在SQLServer2008中尝试了数据加密和解密 通过使用以下查询(来自链接示例),我可以使用SQL查询对值进行解密 OPEN SYMMETRIC KEY Sym_password DECRYPTION BY CERTIFICATE Cert_Password WITH PASSWORD = 'Password!2'; SELECT CAST(DECRYPTBYKEY([Password]) as varchar(

我已经开始阅读和实验C语言中的加密和解密技术#

我已经使用以下链接中提供的信息在SQLServer2008中尝试了数据加密和解密

通过使用以下查询(来自链接示例),我可以使用SQL查询对值进行解密

OPEN SYMMETRIC KEY Sym_password
DECRYPTION BY CERTIFICATE Cert_Password WITH PASSWORD = 'Password!2';
SELECT CAST(DECRYPTBYKEY([Password]) as varchar(200))
FROM Security
CLOSE SYMMETRIC KEY Sym_password;
如何从我的C#应用程序执行相同的操作

在我的MVC应用程序中,我使用电子邮件地址作为我的用户名登录(默认情况下,使用简单成员身份对密码进行哈希)。请建议我在SQL级别加密电子邮件字段并在C#(应用程序级别)中解密这些值的最佳方法

当用户在应用程序中输入用户名(电子邮件)时,我如何在应用程序端加密该值,并将其与SQL记录中的加密值进行比较

CREATE TABLE [Users] (
    UserID int identity(1,1) primary key,
    [Login] varchar(32) unique,
    [Email] varchar(32) unique,
    [Password] varbinary(256) not null,
    [BackupCode] varbinary(256) not null,
    ModifiedDate datetime default (getdate()));

DECLARE @EncryptionKey nvarchar(32) = '007London' ;
DECLARE @Password varchar(32) = 'LoveDanger&Romance' ;
DECLARE @Code varchar(32) = 'GoNawazGo' ;
插入查询(加密):

选择查询(解密):


对SQL Server 2008的主流支持在2年前就结束了。考虑在SQL Server 2016()中移动到列级加密。这允许通过SQL Server客户端API而不是服务器对代码透明地进行加密。感谢@DanGuzman提供的信息。但不幸的是,我现在只有2008版。它需要加密的电子邮件吗?为什么不用腌土豆条呢?
INSERT [Users] ([Login], [Email], [Password], [BackupCode])
SELECT 'JamesBond', 'test@test.com',
    EncryptByPassPhrase(@EncryptionKey, @Password),
    EncryptByPassPhrase(@EncryptionKey, @Code),
 SELECT *, 
     DecryptedPassword = Convert(varchar(32),
     DecryptByPassPhrase(@EncryptionKey, [Password])),
     [Password],
     DecryptedCode = Convert(varchar(32),
     DecryptByPassPhrase(@EncryptionKey, [BackupCode])),
     [BackupCode],
     FROM [Users]