加密SQL Server中列中的数据
sql server中是否存在加密数据的算法。我有一个密码字段,我需要加密,但我必须加密数据,一旦它传递到存储过程中。这意味着我无法从我的C#代码传递加密数据。加密SQL Server中列中的数据
CREATE PROC saveData(@p1 VARCHAR(50),
@p2 VARCHAR(50))
AS
BEGIN
DECLARE @encryptedP1 VARCHAR(50)
SET @encryptedP1=dbo.fnEncrypt(@p1) --ENCRYPTING THE DATA WITH AN INBUILT FUNCTION
INSERT INTO table1
(column1,
column2)
VALUES (@encryptedP1,
@p2)
END
像往常一样,好老Pinal Dave有一些useful information on this。这有点涉及,但如果你必须在SQL Server中做,而不是在客户端代码,那么它应该为你做这项工作。您可能需要留意性能问题,因为它是一个CPU密集型的过程。
今年低估。在数据库服务器上进行这种处理通常不是一个好主意。 (注释不是批评) – crush 2013-02-26 16:17:05
Downvoter - 关注评论?最初的问题是关于SQL Server中的加密问题,这是他得到的。似乎有点意味着只是因为你不认同它的好主意而下决心。哎呀,我甚至指出... – Simon 2014-02-08 17:30:07
@Simon:搜索引导我在这里,你可能想要添加链接相关信息 – TheGameiswar 2016-09-24 17:45:19
这是一个非常快速的例子。它适用于非对称密钥。我希望这可以帮助。
第一关:使用此代码创建非对称密钥:
USE [yourDB]
GO
CREATE ASYMMETRIC KEY ClaveAsym
WITH ALGORITHM = RSA_2048 ---->Take a look in this type of algorithms
ENCRYPTION BY PASSWORD = 'yourKey'
GO
记住这一点,你必须总是要解密或加密声明变量
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))
加密是不明确的。你想使用什么加密算法?私钥和公钥将存储在哪里?它需要加密还是密码哈希? – crush 2013-02-26 16:08:02
建议我哪个是最好的安全目的 – 2013-02-26 16:12:46
这取决于你需要做什么与数据。如果你需要恢复密码,而不是简单地重新设置密码,那么哈希就不存在了。 – crush 2013-02-26 16:15:33