加密/解密SQL Server中传递的值

时间:2014-05-28 14:31:17

标签: sql-server encryption encryption-symmetric encryption-asymmetric

我有以下情况......

供应商向客户发送电子邮件。在电子邮件的底部是一个链接回到我负责托管的网页。我们需要通过指向网页的链接传递用户电子邮件地址,但我们希望将其加密。当我们收到请求时,我们需要能够在结束时解密它,以便我们可以从中提取电子邮件。

我希望供应商能够通过SQL Server(生成链接的地方)对其进行加密,我们也希望使用SQL Server对其进行解密。

我没有,没有,没有加密/解密的经验,需要在接下来的6个小时内设计一个解决方案...... !!!

我看到有关加密整列的信息,但我需要能够加密/解密一个字符串。

有什么想法?更好的方法?

谢谢, ģ

3 个答案:

答案 0 :(得分:2)

我不会使用加密来完成这项任务。您加密的任何内容都可能被某人解密。更好的解决方案是生成随机代码并将其分配到数据库中的电子邮件地址。然后根据该代码进行查找。代码可以像使用GUID一样简单。

In C#: Guid.NewGuid()

In SQL Server: NEWID()

答案 1 :(得分:1)

您可以在SQL Server中使用EncryptByPassPhraseDecryptByPassPhrase

select EncryptByPassPhrase('key', 'abc' );

select convert(varchar(100),
   DecryptByPassPhrase('key', 0x0100000001E5B67F919CCC4B8EA10E97FC50764BF6B30EC4347C4E54));

答案 2 :(得分:0)

我会在您的用户电子邮件表格中创建一个类型为UNIQUEIDENTIFIER的新列,并将其默认值设置为NEWID(),以便创建新的GUID(例如:400c4d0d- cd5a-42fd-8660-15250e27c247)创建记录时。这是假设每封电子邮件,您在此表中创建一条新记录。

用于更改源表的SQL:

ALTER TABLE [YOUR_TABLE] ADD
    UniqueEmailId uniqueidentifier NOT NULL 
    CONSTRAINT DF_YOUR_TABLE_UniqueEmailId DEFAULT newid()

然后,您可以使用超链接中创建的值,如下所示:

www.yoursite.com/emailid=400c4d0d-cd5a-42fd-8660-15250e27c247

然后,点击后,您只需查找与该唯一标识符相关的用户/电子邮件,然后为您的页面提供服务。

这将规避传递您必须在超链接中加密/解密的敏感信息的要求。