|
Encrypt / Decrypt การเข้ารหัส (EnCode และ DeCode) ข้อความบน SQL Server Database |
Encrypt / Decrypt การเข้ารหัส (EnCode และ DeCode) ข้อความบน SQL Server Database บทความนี้เป็นความรู้เล็ก ๆ น้อย เกี่ยวกับการเข้ารหัสข้อความบน SQL Server Database ซึ่งจะแปลงข้อความธรรมดาให้เป็นข้อความที่ถูกเข้ารหัสไว้ ซึ่งเมื่อเปิด Table นั้น ๆ มาก็จะไม่สามารถอ่านข้อความนั้นเข้าใจได้ ซึ่งในการถอดรหัสข้อความนั้นก่อยถึงจะสามารถอ่านเข้าใจได้ โดยในการเข้ารหัส-ถอดรหัส จะต้องมี Key ที่ใช้ในการเข้ารหัส ใช้ในถอดรหัสข้อความด้วย จึงจะได้ข้อความต้นฉบับที่สามารถแปลงกลับมาได้อย่างถูกต้อง ซึ่งสามารถประยุกต์ใช้กับ การเข้ารหัสในการเข้าใจงาน (Password) หรือพวก ข้อความที่ไม่ต้องการให้สามารถเห็นได้ เช้น เงินเดือน , เบอรโทร เป็นต้น
Function ที่ใช้งานคือ EncryptByPassPhrase และ DecryptByPassPhrase รองรับการใช้งานบน SQL Server (2008)
ตัวอย่างการเข้ารหัส
DECLARE @Plaintext VARCHAR(100);
SET @Plaintext = 'ข้อความต้นฉบับ';
SELECT EncryptByPassPhrase('THAICREATE', @Plaintext);
Result : 0x010000009B99B3832B655FCD9E0F99C72E90F27A8675A89545F45D2EF8F9969C59809B06
ตัวอย่างการถอดรหัส
DECLARE @Ciphertext NVARCHAR(100);
SET @Ciphertext = 0x010000009B99B3832B655FCD9E0F99C72E90F27A8675A89545F45D2EF8F9969C59809B06;
SELECT CONVERT(VARCHAR(1000),DecryptByPassPhrase('THAICREATE', @Ciphertext));
Result : ข้อความต้นฉบับ
จากตัวอย่างจะเห็นว่ามีการใช้ Key ชื่อว่า THAICREATE ซึ่ง Key นี้จะต้องใช้ในการเข้ารหัสและถอดรหัสข้อความ จึงจะสามารถ ถอดรหัสกลับมาได้อย่างถูกต้อง
ตัวอย่างการประยุกต์ใช้กับ Table เพื่อให้ากรใช้งานสะดวก สามารถนำ Function นี้ไปไปสร้างเป็น Function อีกทีหนึ่ง เพื่อสะดวกในการเรียกใช้ เช่น
fncEncode
CREATE FUNCTION [dbo].[fncEncode]
(
@sInput VARCHAR(1000)
)
RETURNS NVARCHAR(1000)
AS
BEGIN
RETURN EncryptByPassPhrase('THAICREATE', @sInput);
END
fncDecode
CREATE FUNCTION [dbo].[fncDecode]
(
@sInput NVARCHAR(1000)
)
RETURNS VARCHAR(1000)
AS
BEGIN
RETURN CONVERT(VARCHAR(100),DecryptByPassPhrase('THAICREATE', @sInput));
END
Function ที่ได้
ตัวอย่างการเรียกใช้งาน ให้ออกแบบ Table แบบง่าย ๆ โดยฟิวด์ที่เก็บรหัสให้ใช้ DataType แบบ NVARCHAR
INSERT INTO Employee (EmpID, Name, Salary) VALUES ('E001','Sangsuree Nukitram',dbo.fncEncode('20000'));
จะเห็นว่า Salary จะถูกเข้ารหัสไว้
ถ้าจะให้อ่านได้จะต้องผ่านการ Decode ซะก่อน
SELECT * , dbo.fncDecode(Salary) AS NewSalary FROM Employee
.
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2016-11-30 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|