最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sql Server數(shù)據(jù)庫實(shí)現(xiàn)表中字段的列加密

 更新時(shí)間:2023年10月24日 10:06:36   作者:金斗潼關(guān)  
本文主要介紹了Sql Server數(shù)據(jù)庫實(shí)現(xiàn)表中字段的列加密,主要包括利用證書對數(shù)據(jù)進(jìn)行加密和解密,利用非對稱密鑰對數(shù)據(jù)進(jìn)行加密和解密,利用對稱密鑰對數(shù)據(jù)進(jìn)行加密和解密,感興趣的可以了解一下

1、問題描述

去年6月份的時(shí)候做過一個(gè)系統(tǒng),要對里面的一些敏感字段進(jìn)行一下加密。Sqlserver列加密可以參考官方文檔:SQL Server 技術(shù)文檔 - SQL Server | Microsoft Learn。主要看下來有三種加密方法:1、利用證書對數(shù)據(jù)進(jìn)行加密和解密。2、利用非對稱密鑰對數(shù)據(jù)進(jìn)行加密和解密。3、利用對稱密鑰對數(shù)據(jù)進(jìn)行加密和解密。

2、加密方法介紹

2.1、證書加密(推薦)

2.1.1、創(chuàng)建證書     

use mydb;

--查看數(shù)據(jù)庫中的證書
select * from sys.certificates;

--創(chuàng)建數(shù)據(jù)庫主密鑰
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='123@#456';

--創(chuàng)建證書
CREATE CERTIFICATE MyCert
with SUBJECT = 'My Test Certificate'
GO

--創(chuàng)建證書并授權(quán)給指定用戶(zhangsan)
CREATE CERTIFICATE MyCertToZhangSan AUTHORIZATION zhangsan 
with SUBJECT = 'My Test Certificate To ZhangSan'
GO

2.1.2、使用證書加解密

創(chuàng)建一個(gè)測試表

--創(chuàng)建測試表TUser_test_Cert,要對pwd字段進(jìn)行加密因此其字段類型設(shè)為varbinary
--varbinary表示可變長度二進(jìn)制數(shù)據(jù),但是在sqlserver表存放是以十六進(jìn)制存的。
create table TUser_test_Cert(username varchar(50),pwd varbinary(2000));

在2.1.1環(huán)節(jié)一共建了兩個(gè)證書,MyCert這個(gè)證書是公用的,而MyCertToZhangSan這個(gè)證書是僅限zhangsan這個(gè)用戶可以使用!

使用MyCert證書加解密

--使用MyCert證書加密pwd字段
insert into TUser_test_Cert(username,pwd) values('liming',
		ENCRYPTBYCERT(
		CERT_ID('MyCert')
		,'112233'
	)
);

select * from TUser_test_Cert;

--使用MyCert證書解密pwd字段
select username,CONVERT(
varchar(100),
DecryptByCert
	(
	CERT_ID('MyCert'),pwd
	)
) as pwd from TUser_test_Cert;

使用MyCertToZhangSan證書進(jìn)行加解密

因?yàn)槲沂菍ydb數(shù)據(jù)庫進(jìn)行證書加解密嘛!因此首先要確保mydb下是否有zhangsan這個(gè)用戶!有了zhangsan這個(gè)用戶才能創(chuàng)建證書并對其AUTHORIZATION

有個(gè)地方要提一下,這里的zhangsan這個(gè)用戶是在mydb下的,并不是直接在mydb下直接手動(dòng)創(chuàng)建的,而是整個(gè)sqlserver登錄名zhangsan映射到mydb的一個(gè)用戶映射!

其實(shí)就是在你新建數(shù)據(jù)庫登錄名的時(shí)候做的一個(gè)用戶映射,相當(dāng)于授權(quán)這個(gè)登錄名可以有哪些數(shù)據(jù)庫的權(quán)限了!

不過此時(shí)mydb新加的zhangsan這個(gè)用戶還沒有給他分配角色(所謂角色就是權(quán)限集合)

--創(chuàng)建一個(gè)角色zhangsan_role
create role zhangsan_role;
--給zhangsan_role這個(gè)角色分配TUser_test_Cert表的增刪改查權(quán)限
grant select,update,insert,delete on TUser_test_Cert to zhangsan_role;

在mydb里用戶選擇zhangsan右鍵屬性,在成員身份里選中zhangsan_role就行了!

--使用MyCertToZhangSan證書加密pwd字段
insert into TUser_test_Cert(username,pwd) values('zhangsan',
		ENCRYPTBYCERT(
		CERT_ID('MyCertToZhangSan')
		,'666333'
	)
);

select * from TUser_test_Cert;

--使用MyCert證書解密pwd字段
select username,CONVERT(
varchar(100),
DecryptByCert
	(
	CERT_ID('MyCertToZhangSan'),pwd
	)
) as pwd from TUser_test_Cert;

2.2、非對稱密鑰加解密

----利用非對稱密鑰對數(shù)據(jù)進(jìn)行加密和解密---

--查看數(shù)據(jù)庫中的非對稱密鑰
select * from sys.asymmetric_keys;

--創(chuàng)建非對稱密鑰
CREATE ASYMMETRIC KEY MyTestAsymmetric
    WITH ALGORITHM = RSA_2048
    ENCRYPTION BY PASSWORD = '%^&123%456';
GO

insert into TUser_test_Cert(username,pwd) values('ssan',
		EncryptByAsymKey(
		ASYMKEY_ID('MyTestAsymmetric')
		,'112233'
		)
);

select * from TUser_test_Cert;

select username,CONVERT(
varchar(100),
DecryptByAsymKey
	(
	ASYMKEY_ID('MyTestAsymmetric'),pwd,N'%^&123%456'
	)
) as pwd from TUser_test_Cert;

2.3、對稱密鑰加解密

----利用對稱密鑰對數(shù)據(jù)進(jìn)行加密和解密----

--查看數(shù)據(jù)庫中的對稱密鑰
select * from sys.symmetric_keys;

--創(chuàng)建對稱密鑰
CREATE SYMMETRIC KEY MyTestSymmetric
    WITH ALGORITHM = AES_256
    ENCRYPTION BY PASSWORD = '123456@aes';
GO
--打開密鑰并進(jìn)行加密/解密(只有對稱加密需打開密鑰?。。。?
open symmetric key MyTestSymmetric decryption by password='123456@aes';

insert into TUser_test_Cert(username,pwd) values('qianqian',
		EncryptByKey(Key_GUID('MyTestSymmetric'), 'qw123sa')
);

select * from TUser_test_Cert;

select username,CONVERT(
varchar(100),
DECRYPTBYKEY(pwd) 
) as pwd from TUser_test_Cert

3、總結(jié)

Sqlserver數(shù)據(jù)庫列字段加密推薦使用證書加密,使用證書加密是對特定的賬號(hào)授予他們使用證書加解密的權(quán)限,他們只是用了證書的cert_id,并不會(huì)涉及password密鑰。但如果使用其他方法加密的話,比如AES,RSA的話,那么在加解密的時(shí)候會(huì)把密鑰暴露給開發(fā)人員

 所以就不太安全!用證書的話就不會(huì)把密碼暴露給開發(fā)人員,只暴露給特定的賬戶!

4、參考資料

創(chuàng)建數(shù)據(jù)庫主密鑰 - SQL Server | Microsoft Learn

 通俗易懂的對稱加密與非對稱加密原理淺析 - 掘金

SQL Server 數(shù)據(jù)庫對稱加密_QAQ_的博客-CSDN博客

AES加密算法的詳細(xì)介紹與實(shí)現(xiàn)_TimeShatter的博客-CSDN博客_aes

SQLSERVER加密解密函數(shù)(非對稱密鑰 證書加密 對稱密鑰)_weixin_33877092的博客-CSDN博客

獲取所有用戶名 sql server_jgwei的博客-CSDN博客_sqlserver 查看數(shù)據(jù)庫所有用戶名

[轉(zhuǎn)]【SQLServer】獲取SQL Server數(shù)據(jù)庫用戶名、數(shù)據(jù)庫名、所有表名、所有字段名_liujzss的博客-CSDN博客

SQL Server 創(chuàng)建登錄名和用戶名【詳細(xì)介紹】_Henry_626的博客-CSDN博客_sqlserver新建登錄名

到此這篇關(guān)于Sql Server數(shù)據(jù)庫實(shí)現(xiàn)表中字段的列加密的文章就介紹到這了,更多相關(guān)Sql 列加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • sql中COALESCE函數(shù)的使用小結(jié)

    sql中COALESCE函數(shù)的使用小結(jié)

    COALESCE函數(shù)用于從其參數(shù)列表中返回第一個(gè)非NULL值,本文主要介紹了sql中COALESCE函數(shù)的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • vs code連接sql server數(shù)據(jù)庫步驟及遇到的問題小結(jié)

    vs code連接sql server數(shù)據(jù)庫步驟及遇到的問題小結(jié)

    這篇文章主要介紹了用vs code連接sql server數(shù)據(jù)庫步驟及遇到的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SQL 將一列拆分成多列的三種方法

    SQL 將一列拆分成多列的三種方法

    這篇文章主要介紹了SQL 將一列拆分成多列的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • SQL SERVER數(shù)據(jù)操作類代碼

    SQL SERVER數(shù)據(jù)操作類代碼

    跟大家分享個(gè)SQL Server數(shù)據(jù)操作類,主要是操作數(shù)據(jù)庫有關(guān)。請做適當(dāng)修改
    2012-06-06
  • mysql與mssql的md5加密語句

    mysql與mssql的md5加密語句

    mysql與mssql的md5加密語句,需要的朋友可以參考一下
    2013-03-03
  • Linux安裝ODBC連接SQLServer數(shù)據(jù)庫的步驟

    Linux安裝ODBC連接SQLServer數(shù)據(jù)庫的步驟

    這篇文章主要介紹了Linux安裝ODBC連接SQLServer數(shù)據(jù)庫?,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • SQL?Server備份數(shù)據(jù)庫的完整步驟

    SQL?Server備份數(shù)據(jù)庫的完整步驟

    備份是指對SQL?Server數(shù)據(jù)庫或事務(wù)日志進(jìn)行的復(fù)制,下面這篇文章主要給大家介紹了關(guān)于SQL?Server備份數(shù)據(jù)庫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • SQL SERVER臨時(shí)表排序問題的解決方法

    SQL SERVER臨時(shí)表排序問題的解決方法

    這篇文章主要給大家介紹了關(guān)于SQL SERVER臨時(shí)表排序問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 強(qiáng)制SQL Server執(zhí)行計(jì)劃使用并行提升在復(fù)雜查詢語句下的性能

    強(qiáng)制SQL Server執(zhí)行計(jì)劃使用并行提升在復(fù)雜查詢語句下的性能

    最近在給一個(gè)客戶做調(diào)優(yōu)的時(shí)候發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象,對于一個(gè)復(fù)雜查詢(涉及12個(gè)表)建立必要的索引后,語句使用的IO急劇下降,但執(zhí)行時(shí)間不降反升,由原來的8秒升到20秒。
    2014-07-07
  • sqlserver四舍五入使用round函數(shù)及cast和convert函數(shù)

    sqlserver四舍五入使用round函數(shù)及cast和convert函數(shù)

    大家在遇到sqlserver四舍五入除了用round函數(shù)還有沒有其他方法呢?下面小編給大家介紹使用cast和convert函數(shù),感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11

最新評論

彰化市| 广安市| 甘南县| 无为县| 白水县| 法库县| 长丰县| 金沙县| 商都县| 洪泽县| 福海县| 海门市| 保康县| 宿松县| 铁力市| 镶黄旗| 寿宁县| 隆化县| 东乡族自治县| 海门市| 安吉县| 和田市| 那曲县| 田林县| 曲阜市| 大冶市| 涪陵区| 芜湖县| 日土县| 南乐县| 盘山县| 遂平县| 黑河市| 资中县| 徐水县| 攀枝花市| 聊城市| 沈丘县| 皋兰县| 乌拉特后旗| 漳浦县|