關於sql的對稱性金鑰和非對稱性金鑰(基礎)

2022-07-16 19:24:13 字數 2599 閱讀 8443

首先談一下自己的理解,金鑰我們都知道是對我們所知道的某乙個事物進行加密。先講一下對稱性金鑰,如果我們對乙個資料庫中的乙個表的某些元素進行加密的時候,所用的加密密碼和解密的密碼是一致的,而非對稱性金鑰則剛好是相反的。

我們具體看下怎樣對乙個我們想要加密的表資料進行加密和解密。

1

、加密乙個資料庫中的表的資訊

2、建master key:

create master key encryption by password = '

p@ssw0rd';

用於加密資料庫主金鑰的密碼

資料庫主金鑰是指用於保護證書私鑰的對稱金鑰以及資料庫中存在的非對稱金鑰。 當建立主金鑰時,會使用 aes_256 演算法以及使用者提供的密碼對其進行加密。 在 sql server

2008 和 sql server 2008

r2 中,不使用 triple des 演算法。 若要啟用主金鑰的自動解密功能,將使用服務主金鑰對該主金鑰的副本進行加密,並將副本儲存在資料庫和 master 中。 通常,每當主金鑰更改時,便會在不進行提示的情況下更新儲存在 master 中的副本。 可以使用 alter master key 的 drop encryption by service master key 選項對該預設行為進行更改。 必須使用 open master key 語句和密碼開啟未使用服務主金鑰進行加密的主金鑰。

master 中 sys.databases 目錄檢視的 is_master_key_encrypted_by_server 列指示是否使用服務主金鑰對資料庫主金鑰進行加密。

可以在 sys.symmetric_keys 目錄檢視中檢視有關資料庫主金鑰的資訊。

3、建表:person

create table person

( contactid int primary key,

firstname nvarchar(

200),

middlename nvarchar(

200),

lastname nvarchar(

200),

efirstname varbinary(

200),

emiddlename varbinary(

200),

elastname varbinary(

200),

);4、建證書:

create certificate testcertificate

with subject = '

adventureworks test certificate

',expiry_date = '

10/10/2009';

5、建對稱key:

create symmetric key testsymmetrickey

with algorithm =triple_des

encryption by certificate testcertificate;

open symmetric key testsymmetrickey

decryption by certificate testcertificate;

6、向表person中插入加密的資料

insert

into person (contactid, efirstname, emiddlename, elastname)

values(1,

encryptbykey(key_guid(

'testsymmetrickey

'), '

efirstname'),

encryptbykey(key_guid(

'testsymmetrickey

'), '

emiddlename'),

encryptbykey(key_guid(

'testsymmetrickey

'), '

elastname')

)7、解密6中的資料

update person

set firstname =convert(varchar,decryptbykey(efirstname)),

middlename =convert(varchar,decryptbykey(emiddlename)),

lastname =convert(varchar,decryptbykey(elastname));

8、檢視解密後的結果

select cast(decryptbykey(efirstname) as

varchar) from person

9、刪除以上的結構

drop table person;

close symmetric key testsymmetrickey;

drop symmetric key testsymmetrickey;

drop certificate testcertificate;

drop master key;

ps:expiry_date是有效時間,要大於當前時間

這樣建立之後我們看到相應的加密資料將會是亂碼!

通過這個例子你可以很好的去理解關於加密的概念。關於具體的一些語句的運用規則這有乙個**

對稱性和非非對稱性加密

加密分為兩種方式一種是對稱加密,一種是非對稱加密。在對稱加密演算法中,加密和解密使用的金鑰是相同的。也就是說,加密和解密使用的是同乙個金鑰。因此,對稱加密演算法要保證安全性的話,金鑰要做好保密。只能讓使用的人知道,不能對外公開。在非對稱加密演算法中,加密使用的金鑰和解密使用的金鑰是不相同的。一把是作...

網路程式設計 HTTPS非對稱性加密傳輸

http 有著乙個致命的缺陷,那就是內容是明文傳輸的,沒有經過任何加密,而這些明文資料會經過wifi 路由器 運營商 機房等多個物理裝置節點,如果在這中間任意乙個節點被監聽,傳輸的內容就會完全暴露,這一攻擊手法叫做mitm man in the middle 中間人攻擊。https其實就是將http...

實現模式中的「對稱性」

人民郵電出版社 實現模式 一書中,thoughworks的工程師將symmetry翻譯成對稱性,這個讓我迷惑了一段時間 對稱 給我的感覺總是指兩個物體,或者物體的兩邊,總之是 兩 個什麼東西一致協調 但書中的例子說以下 中 count 不 對稱 了 void process 唉,我就暈了,這段 怎麼...