数据加密

bean_sql 2012-06-15 12:33:05
请教以下三种加密方式,
在什么时候用哪种加密方式


/*
1:短语加密(PassPhrase)
2:对称密钥加密(CERTIFICATE)
3:证书加密数据(SYMMETRIC)
*/


目前遇到一个问题,需要对一张产品表报价进行加密,
不允许别人直接通过SQL内部查询价格,
只能从软件里看到显示的价格信息
该采取哪种方案?
...全文
299 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
一剑枯荣 2014-08-07
  • 打赏
  • 举报
回复
昵称被占用了 2012-06-19
  • 打赏
  • 举报
回复
想复杂了吧,你在程序中随便搞个什么加解密算法(选择看你的加密需要),在修改和插入前调用,写入库的全部是密文,谁看到也只能知道加密方法才能解开,或者说离开程序就看不到不就可以了。
数据库负责存储就行了。
bean_sql 2012-06-19
  • 打赏
  • 举报
回复

--版本:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)




[Quote=引用 19 楼 的回复:]

你的SQL SERVER 是哪个版本?
如果不想让select 直接出现结果,只要是加密了,在程序里面解密就可以了...
[/Quote]
叶子 2012-06-18
  • 打赏
  • 举报
回复
你的SQL SERVER 是哪个版本?
如果不想让select 直接出现结果,只要是加密了,在程序里面解密就可以了...
bean_sql 2012-06-16
  • 打赏
  • 举报
回复
大仙都跑哪去了?
xiaoxiangqing 2012-06-16
  • 打赏
  • 举报
回复
sql server有专门的加密,解密函数
haitao 2012-06-16
  • 打赏
  • 举报
回复
讲的都这么直白了,还要什么大仙?
haitao 2012-06-15
  • 打赏
  • 举报
回复
2、3顺序变了?
证书加密是比较麻烦,一般用在远程用户不容易得到密码的时候
对称密钥加密比较简单,但要求预期的解密者能安全、方便地得到密码

1还是有点奇怪,可能是外行的叫法?
1. a passphrase from which to generate a symmetric key
用于生成对称密钥的通行短语。
2. a passphrase is a password that includes spaces
通行短语是包含空格的密码。
3. the passphrase should be changed on a regular basis
使用者应定期更改密码。
4. decrypts data that was encrypted with a passphrase
对使用通行短语加密的数据进行解密。
5. when we specify a passphrase , it allows
当我们指定密码短语时,虽然这使得
6. instead , a cryptographic hash of the passphrase is stored
相反,储存了密码的密码杂凑。
7. again , we ll be prompted for a passphrase
又会提示我们输入密码短语。
8. the encryption key will be computed
加密密钥将基于passphrase计算
9. will ask us to enter a passphrase
会要求我们输入一个密码短语。
10. prompted us to enter a passphrase
还提示过我们输入密码短语。
bean_sql 2012-06-15
  • 打赏
  • 举报
回复

-------------------------------------------请教以下三种加密方式,在什么时候用哪种加密方式
/*
1:短语加密(PassPhrase)
2:证书加密数据(CERTIFICATE)
3:对称密钥加密(SYMMETRIC)
*/

bean_sql 2012-06-15
  • 打赏
  • 举报
回复

/*
1:短语加密(PassPhrase)
2:证书加密数据(CERTIFICATE)
3:对称密钥加密(SYMMETRIC)
*/
haitao 2012-06-15
  • 打赏
  • 举报
回复
2

1不知道是什么?轮换加密?不保险
yxhshuaiman 2012-06-15
  • 打赏
  • 举报
回复
做过同样的对报价进行加密的飘过
采用的cfca的证书
进行加密的 到了开标的时候服务自动开启 产生解密列表 用于报价显示
haitao 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 11 楼 的回复:

mssql,只要服务器的win管理员,就是能什么都看到了!

使用对称加密后也能看到?
[/Quote]

加密了,当然要有密码才能看到。否则只能看到密文
bean_sql 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

mssql,只要服务器的win管理员,就是能什么都看到了!
[/Quote]
使用对称加密后也能看到?
haitao 2012-06-15
  • 打赏
  • 举报
回复

你只贴了 使用对称密钥加密数据 的代码
没贴 对称密钥又使用证书来加密
我怎么知道 对称密钥又使用证书来加密。。。。。。。。

[Quote=引用 7 楼 的回复:]
朋友你理解错了吧


SQL code

--使用对称密钥加密数据,
--对称密钥又使用证书来加密.

--创建测试数据表tb
CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000));
GO

--建立证书,该证书用于加密对称密钥.

CREATE CERTIFICATE Cert_Demo
……
[/Quote]
haitao 2012-06-15
  • 打赏
  • 举报
回复
mssql,只要服务器的win管理员,就是能什么都看到了!
bean_sql 2012-06-15
  • 打赏
  • 举报
回复
数据库会放到没个门店里,
每个门店的IT管理人员不允许查看数据库里价格信息
这些信息属于总部保密信息...


[Quote=引用 9 楼 的回复:]

引用楼主 的回复:
不允许别人直接通过SQL内部查询价格,
只能从软件里看到显示的价格信息

这种要求不是只要加密你应用里的connection string就可以了么。别人没你数据库的access自然看不到数据
[/Quote]
mayuanf 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
不允许别人直接通过SQL内部查询价格,
只能从软件里看到显示的价格信息
[/Quote]
这种要求不是只要加密你应用里的connection string就可以了么。别人没你数据库的access自然看不到数据
bean_sql 2012-06-15
  • 打赏
  • 举报
回复
朋友你理解错了吧


--使用对称密钥加密数据,
--对称密钥又使用证书来加密.

--创建测试数据表tb
CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000));
GO

--建立证书,该证书用于加密对称密钥.

CREATE CERTIFICATE Cert_Demo
ENCRYPTION BY PASSWORD=N'liangCK.123'
WITH
SUBJECT=N'cert encryption by password',
START_DATE='2008-01-01',
EXPIRY_DATE='2008-12-31'
GO

--建立对称密钥

CREATE SYMMETRIC KEY Sym_Demo
WITH
ALGORITHM=DES --使用DES加密算法
ENCRYPTION BY CERTIFICATE Cert_Demo --使用Cert_Demo证书加密
GO

--要使用Sym_Demo对称密钥.必需使用OPEN SYMMETRIC KEY来打开它

OPEN SYMMETRIC KEY Sym_Demo
DECRYPTION BY CERTIFICATE Cert_Demo
WITH PASSWORD=N'liangCK.123'

--插入加密数据

INSERT tb(data)
SELECT ENCRYPTBYKEY(KEY_GUID(N'Sym_Demo'),N'这是加密的数据,能显示出来吗?')

--关闭密钥
CLOSE SYMMETRIC KEY Sym_Demo

--插入完加密数据,现在使用SELECT来查询一下数据

SELECT * FROM tb

GO

--现在来解密此数据

--同样,还是要先打开对称密钥

OPEN SYMMETRIC KEY Sym_Demo
DECRYPTION BY CERTIFICATE Cert_Demo
WITH PASSWORD=N'liangCK.123'

SELECT CONVERT(NVARCHAR(50),DECRYPTBYKEY(data)) --这里可见,数据已经解密出来了.
FROM tb

CLOSE SYMMETRIC KEY Sym_Demo
GO

--删除测试
DROP SYMMETRIC KEY Sym_Demo
DROP CERTIFICATE Cert_Demo
DROP TABLE tb

[Quote=引用 6 楼 的回复:]

这个例子,好像就是对称加密吧。。。。。
[/Quote]
haitao 2012-06-15
  • 打赏
  • 举报
回复
这个例子,好像就是对称加密吧。。。。。
加载更多回复(1)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧