Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
在SQL Server中加密列中的数据_Sql_Database_Security_Encryption - Fatal编程技术网

在SQL Server中加密列中的数据

在SQL Server中加密列中的数据,sql,database,security,encryption,Sql,Database,Security,Encryption,sql server中是否存在加密数据的算法。我有一个需要加密的密码字段,但是一旦数据被传递到存储过程中,我就必须对其进行加密。这意味着我无法从我的c#代码传递加密数据 我建议用盐腌的sha1或md5 CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2) 虽然哈希在技术上不是加密。像往常一样,好老的Pinal Dave也有一些。这有点复杂,但是如果您必须在SQL Server中而不是在客户端代码中完成这项工作,那么它应该为您完成这

sql server中是否存在加密数据的算法。我有一个需要加密的密码字段,但是一旦数据被传递到存储过程中,我就必须对其进行加密。这意味着我无法从我的c#代码传递加密数据


我建议用盐腌的sha1或md5

CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)

虽然哈希在技术上不是加密。

像往常一样,好老的Pinal Dave也有一些。这有点复杂,但是如果您必须在SQL Server中而不是在客户端代码中完成这项工作,那么它应该为您完成这项工作。您可能需要注意性能问题,因为这是一个CPU密集型进程。

这是一个非常快速的示例。它与非对称密钥一起工作。我希望这能有所帮助

首先:使用以下代码创建非对称密钥:


记住这一点,您必须始终声明一个要解密加密

DECLARE @KEYID INT
SET @KEYID = AsymKey_ID('ClaveAsym')

解密数据

SELECT columnA, CAST(DecryptByAsymKey(@keyid, columnUser, N'yourKey') AS VARCHAR(100)),
        CONVERT(VARCHAR(MAX), DECRYPTBYASYMKEY(@keyId, columnPass, N'yourKey'))
FROM yourTable
DECLARE @User VARCHAR(MAX), @pass VARCHAR(MAX)

SET @User = 'yourUser'

sET @pass = 'yourPass'

DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym') 

INSERT INTO yourTable( User, passw) VALUES EncryptByAsymKey (@keyid, @User ), EncryptByAsymKey (@keyid, @pass))

加密数据

SELECT columnA, CAST(DecryptByAsymKey(@keyid, columnUser, N'yourKey') AS VARCHAR(100)),
        CONVERT(VARCHAR(MAX), DECRYPTBYASYMKEY(@keyId, columnPass, N'yourKey'))
FROM yourTable
DECLARE @User VARCHAR(MAX), @pass VARCHAR(MAX)

SET @User = 'yourUser'

sET @pass = 'yourPass'

DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym') 

INSERT INTO yourTable( User, passw) VALUES EncryptByAsymKey (@keyid, @User ), EncryptByAsymKey (@keyid, @pass))

加密是不明确的。您希望使用什么加密算法?私钥和公钥将存储在哪里?它需要加密还是加密散列?建议我哪一个是最安全的,这取决于你需要对数据做什么。如果你需要恢复密码,而不是简单地重置密码,那么散列是不可能的。是的,我想把它解密回来。我已经提到过,我在c#中不允许加密/解密。这是散列,不是加密。此外,您还可以在SQL中执行SHA1和MD5。在数据库服务器上执行这种处理通常不是一个好主意。(注释而不是批评)你想评论吗?最初的问题是关于SQL Server中的加密,这是他得到的。仅仅因为你不同意就投反对票似乎有点刻薄这是个好主意。见鬼,我甚至指出…@Simon:search引导我到这里,你可能想从links@Simon:search lead me here,您可能希望从链接中添加相关信息