iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
自我挑戰組

資料庫二年級:練習AdventureWorks範例資料庫系列 第 23

[第二十三天]製作加密資料

  • 分享至 

  • xImage
  •  

是這樣的......

有一張表讓我覺得很酷,
那就是[Person].[Password]:

SELECT *
FROM [Person].[Password]

https://ithelp.ithome.com.tw/upload/images/20221007/20152049a9ikbq1u7n.jpg
密密麻麻的密碼!!

我也試著製作密碼,
就是把資料加密,一起來看看:

準備資料

先找到下手目標-[Person].[EmailAddress]

SELECT *
FROM [Person].[EmailAddress]

https://ithelp.ithome.com.tw/upload/images/20221007/20152049FIAtLtswtq.jpg

SUBSTRING

再來我想要選出EmailAddress這個欄位,
並且動一些手腳,
那就是第二欄選出EmailID,
也就是@後的文字不需要,
這時候我們會需要SUBSTRING,
公式是:

SUBSTRING(欄位,0,CHARINDEX('識別符號',欄位))

整理一下會變成:

SELECT [EmailAddress]
,SUBSTRING([EmailAddress],0,CHARINDEX('@',[EmailAddress]))
,*
FROM [Person].[EmailAddress] 

https://ithelp.ithome.com.tw/upload/images/20221007/20152049cyqtvNxyHg.jpg

存入佔存表

之前我們有說過佔存表就是我們整理的資料精華,
現在我要把資料存進去:

--先宣告佔存表
declare @ta table(e1 nvarchar(100),e2 nvarchar(100))
--INSERT資料
INSERT INTO @ta(e1,e2)
SELECT [EmailAddress]
,SUBSTRING([EmailAddress],0,CHARINDEX('@',[EmailAddress])) EmailID
FROM [Person].[EmailAddress] 

加密

接著就是我們的重頭戲:加密!
一樣要使用剛剛認識的好朋友SUBSTRING,
複雜的公式是

SUBSTRING(sys.fn_varbintohexstr(hashbytes('SHA2_256',cast(欄位 as varchar(10)))),3,64)

來用看看:

SELECT e1 EmailAddress
,e2 加密前
,SUBSTRING(sys.fn_varbintohexstr(hashbytes('SHA2_256',cast(e2 as varchar(10)))),3,64)加密後 
FROM @Ta

https://ithelp.ithome.com.tw/upload/images/20221007/20152049dHrwEMX3rf.jpg

完成!
明天會繼續說明加密這件事情,
敬請期待~


上一篇
[第二十二天]IIF(如果可以~)
下一篇
[第二十四天]WITH...AS
系列文
資料庫二年級:練習AdventureWorks範例資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言