sql2008 数据库 建表 表中的某一个字段要加密处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql2008 数据库 建表 表中的某一个字段要加密处理相关的知识,希望对你有一定的参考价值。

请问怎么弄
某个字段要加密存储

参考技术A /*
1.利用对称密钥
搭配EncryptByKey进行数据jiami
使用DecryptByKey函数进行jiemi
这种方式比较适合大数据量
*/
CREATE SYMMETRIC KEY ZXC WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'ZXC123456'
OPEN SYMMETRIC KEY ZXC DECRYPTION BY PASSWORD = 'ZXC123456'
--jiami
SELECT Encryptbykey(Key_guid('ZXC'), 'YHDH_C')
--jiemi
SELECT CONVERT(VARCHAR(10), Decryptbykey(0x001B05DF93A12F4A941E64A06B9AEE94010000007582B2C772953F1A6ABC7298E126B76A22A6815115466653D11D6D1F23641DA6))
CLOSE SYMMETRIC KEY ZXC;
DROP SYMMETRIC KEY ZXC;

/*
2.利用非对称密钥
搭配EncryptByAsymKey进行数据jiami
使用DecryptByAsymKey函数进行jiemi
用于更高安全级别的加jiemi数据
*/
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'XIAOMA'
CREATE ASYMMETRIC KEY ABC WITH ALGORITHM=RSA_2048 ENCRYPTION BY PASSWORD = 'ZXC123456'
ALTER ASYMMETRIC KEY ABC WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'ZXC123456')
--jiami
Select Encryptbyasymkey(Asymkey_id ('ABC'), 'ZXC123456')
SELECT CONVERT(VARCHAR(100), Decryptbyasymkey (Asymkey_id('ABC'),0xDA7081BE942896AE961589B5BC8ABDA88BF28DBECD4AB0F9EF1C1666591511BE4D2659EE01B8686002946A8EF7074B14CFFBFF042F21D4F86878EAD8B24E1CF29031D89315D20F70F456A69D74491652522035A0B394E412B0AF52198E665C3E163765A2095D654E6922E0F94E0FAD83C6C322E56C910DBEACD3FF98C912F153B4C701431A74E6A10EAF342491345B0D1D47C49B8895EB02E0152EABFC19A3FA4BD857F228B7082F0195DFEB82E734E0B0722798D2382D1F2FEC8203CCA302B8E80D06913A168C50011FD0A526A1088C55EA905AFB97AC414CBDACD4A28BCC4CD3CBDC8140851057A3E6882F17DA914ECFFC01A196B1F7E7B7AC3E945E106D82 ))
DROP ASYMMETRIC KEY ABC;
DROP MASTER KEY

/*
3.利用凭证的方式
搭配EncryptByCert进行jiami
DecryptByCert函数进行jiemi
比较类似非对称密钥
*/

CREATE CERTIFICATE ZXC
ENCRYPTION BY PASSWORD = 'xiaoxiao'
WITH SUBJECT = 'DB_Encrypt_Demo Database Encryption Certificate',
START_DATE = '2015-10-1'
--jiami
Select Encryptbycert(Cert_id('ZXC'), '123456')
--jiemi
SELECT convert(Varchar(10), Decryptbycert(Cert_id('ZXC'), 0xB4E223CC08A73DE5AFE81A6FF14E76503CF55066EE8186F0781942E54B4FA97D3B49D9A16A102398311F9B259D3E2F23F0B35D3720F4AAB08357850D96A7E43494A306D227A29812BA62A33B39AC600D6585EA6B03F5F97A012C5A0BE7BC52FF60519421BD8D09311F10CC55EEA166FDBFAD2A5D9E2D3043A215AE27A918E35B,N'xiaoxiao'))
DROP CERTIFICATE ZXC;

/*
4.利用mima短语方式
搭配EncryptBypassPhrase进行jiami
使用DecryptByPassPhrase函数来jiemi
比较适合一般的数据加jiemi
*/
--jiami
Select Encryptbypassphrase('xiaoma', '123456')
--jiemi
SELECT CONVERT(VARCHAR(100), Decryptbypassphrase('xiaoma',0x01000000435DFA417C8E1A1417D901357378A1864F721EAA53DCD800 ))本回答被提问者和网友采纳

我想更新sql 表1中的某一列数值,这个数值是从另外一个表中取出来的。语句怎么写

1、打开数据表,比如我们想要查找表中的数据1。

2、则点击new query。

3、在弹出的界面输入查询的sql语句select * from test1 WHERE name='1';(温馨提示:注意分号哦),

4、输入sql语句之后点击当前弹出框的run按钮运行。

5、结果就会出现在当前查询界面的下方。

参考技术A 用子查询
update 表名 t set 被修改字段名 =
(select t2.取出数据 from 另一个表名 t2 where t2.条件 = '条件')
where t.修改条件 = '条件';
能看懂吧..追问

你说的是我想要的

本回答被提问者采纳
参考技术B update A set A.x=B.y
from A,B
where A.id=B.id

注意两表的连接条件A.id=B.id追问

明天试试 谢谢

追答

MYSQL的写法:
update A from A,B
where A.id=B.id
SET A.x=B.y

注意两表的连接条件A.id=B.id

参考技术C update table1 set aa=bb from table2 where table2.cc=table1.cc追问

明天试试 谢谢

参考技术D 直接改不行吗?!!如果两个表数值必须一致,你就要做其他一些工作,写个触发器,如果没必要,那你直接改不就行了,还跟那表链接干嘛。

以上是关于sql2008 数据库 建表 表中的某一个字段要加密处理的主要内容,如果未能解决你的问题,请参考以下文章

在pl/sql中怎么查询所有存在的表,以及怎么样获得未知表中的某一字段

怎么用SQL语句同步两个表中的字段值?

如何用SQL语句将数据库中的表的某一时间型字段的默认值设置为当前日期

SQL Serever学习6——数据表

请问修改表中的某一个日期类型的字段为当前系统时间的sql语句该如何书写。

SQL语句 将表中的某一列的数据赋值成从0开始自增1