១២
មករា

វិធីសាស្រ្ត ENCRYPT & DECRYPT ដោយ​ប្រើ Ms Access ជាមួយ C#

សូមចុច Like គេហទំព័រ www.antkh.com ដើម្បី​ទទួលបានអត្ថបទថ្មីៗ​ប្រចាំ​ថ្ងៃ​

ដូចអ្នកបានដឹងហើយថាសព្វ​ថ្ងៃ​នេះ​បច្ចេកវិទ្យា មានការរីក​ចម្រើន​ជាខ្លាំងនៅ​ក្នុង​ពិភពលោក​ដូចជា​: បច្ចេកវិទ្យា​ពិត៌មានវិទ្យា, ​បច្ចេកវិទ្យា​សុខាភិបាល និង​បច្ចេកវិទ្យា​ផ្សេងៗ​ទៀត ។ យើងសូមលើកមកនិយាយ​បច្ចេកវិទ្យា​ព័ត៌មាន​វិទ្យានៅ​ក្នុង​ប្រទេស​កម្ពុជា ដែល​ជា​បច្ចេកវិទ្យា​មួយដែរ មានការរីក​ចម្រើន​ក្នុង​រយៈពេល​ប៉ុន្មាន​ឆ្នាំ​ចុងក្រោយ​នេះ ឧទាហរណ៍មួយ​ផ្នែក​តូច​ដូចជា​: ស្ទើរតែ​គ្រប់ហាងទំនិញធំៗ​, ​ក្រុមហ៊ុន​, អង្គការ, សាលារៀនឯកជននិងរដ្ឋ , ​សាកលវិទ្យាល័យ​ឯកជននិងរដ្ឋ, ធនាគារឯកជននិងរដ្ឋ បាន​ប្រើ​ប្រាស់​និង​កំពុង​បន្ត​បង្កើត​ប្រព័ន្ធ​គ្រប់គ្រង​ទិន្នន័យ សម្រាប់​ធ្វើការ​គ្រប់គ្រង​ទិន្នន័យ​នៅ​ក្នុង​ស្ថាប័នរៀងៗ​ខ្លួន ។ ទិន្នន័យ​ភាគ​ច្រើន​ត្រូវបាន​រក្សាទុក​នៅ​ក្នុង​កម្មវិធី MS Excel, MS Access, SQL Server ឬ​ក៏​ Oracle ទិន្នន័យ​ទាំងនោះ​ពិតជាមាន​សារៈ​សំខាន់​ណាស់ ។ តើយើងត្រូវធ្វើដូចម្តេច ដើម្បី ឲ្យ​ទិន្នន័យ​មាន security ​ខ្ពស់​? ដូចនេះយើងសូមលើកយកវិធីសាស្រ្ត Encrypt Decrypt Data នៅ​ក្នុង MS Access ដោយ​ប្រើ​ប្រាស់​កម្មវិធី Visual Studio ជូនប្រិយមិត្តអ្នកអានជា​ពិសេស សិស្ស និស្សិត រៀន​ផ្នែក​ព័ត៌មាន​វិទ្យា​ទាំងអស់​ឲ្យ​បានជ្រាប ។ សូមអនុវត្តន៍ តាមជំហានដូច​ខាងក្រោម​៖

​១. បង្កើត FORM

​បង្កើត FORM ​ដែល​មាន​លក្ខណៈ​ដូច​ខាងក្រោម​៖

• TextBox  អ្នក​ប្រើ​ប្រាស់ ដាក់​ឈ្មោះ txtUserName

• TextBox  លេខ​សម្ងាត់ ដាក់​ឈ្មោះ txtPassword

•  Button  ចូល​ទៅកាន់ ដាក់​ឈ្មោះ btnSignIn

•  Button  ចូល​ទៅកាន់ ដាក់​ឈ្មោះ btnSignUp

២. ​បង្កើត Database

បើក Ms Access → New

ដាក់​ឈ្មោះ Database “db” រួចចុចលើ ICON Browse  ទៅរកទីតាំងផ្ទុក Database

ដាក់ Database File នៅ​ក្នុង​ Project (ProjectName/bin/Debug) របស់យើងរួចចុច OK បន្ទាប់មក ចុច Create

​បង្កើត Database ​ឈ្មោះ “user_account” នឹងមាន Fields (user_account_id,user_name,passwords)

៣. ​បង្កើត Class ផ្ទុក​ Encrypt & Decryption Method

ដើម្បី​បង្កើត Encrypt និង Decrypt ​ទិន្នន័យ​យើងនឹង​ធ្វើការ​បង្កើត Class មួយ​ឈ្មោះ MyModel  ផ្ទុក Method នឹង​ប្រើ Reference ជំនួយ​ឈ្មោះ Microsotf.VisaulBasic

Add Reference

 Right + Click លើ Reference ​បន្ទាប់មក ចុច Add Reference គ្រីសលើ Microsotf.VisaulBasic

​បង្កើត MyModel

Encryption Function

Encryption ជា Function ​ដែល​មាន Datatype ជា String និងមាន Parameter ចំនួនមួយគឺ (strData) ។ នៅពេល Function នេះវា​ដំណើរ​ការ​វានិងចាប់ផ្តើម​បង្កើត Variable មួយ​ឈ្មោះ​ mstrData ដែល​មាន​ទិន្នន័យ​ស្មើនឹង​ទទេរ ។

- ​បន្ទាប់មក​ទៀតត្រង់​ចំណុច For Loop ​វានឹង​បង្កើត Variable ថ្មីមួយទៀត​ឈ្មោះ ​ដែល​តម្លៃ​ចាប់ផ្តើមរបស់វាស្មើ ១ រហូត​ដល់​តម្លៃ​វា​ស្មើនឹង​ចំនួន តួអក្សរសរុបនៃ strData ។ ដែល​ចំនួនតួអក្សរសរុបនោះបាន​មកពី Function Len (strData)

- ត្រង់ Code Mid (strData, i, 1) ​មានន័យថា​ចាប់យកតួអក្សររបស់ strData ត្រង់ទីតាំង​ i និងយកមួយតួអក្សរ ។ ឧទាហរណ៍​ប្រសិនបើ strData=”abcde” ,​ i=1 នោះវាចាប់បាន a , i=2 នោះវាចាប់បាន b ,...

- ត្រង់ Code Asc (Mid (strData, i, 1) ) – 10 មានន័យថា​បន្ទាប់ពី Mid ចាប់បានតួអក្សរ​ណាមួយ របស់ strData រួចហើយ​វានឹង​បំប្លែង​តួអក្សរនោះទៅជា​តម្លៃ​ ASCII code របស់តួអក្សរនោះ បន្ទាប់មក​ទៀតវាយក​តម្លៃ​នោះមកដកនិងចំនួន ១០ ។ បន្ទាប់មក​ទៀត​វានឹង​បំប្លែង​តម្លៃ ASCII code នោះទៅជាតួអក្សរវិញ​តាមរយៈ ChrW (Asc (Mid (strData, i, 1) ) -10) ។ ជា​ចុងក្រោយ mstrData គឺស្មើ mstrData តជាមួយតួអក្សរ​ដែល​ទទួលបាន ។

 DECRYPTION FUNCTION

- Decryption ជា Function ​ដែល​មាន Datatype ជា String និងមាន Parameter ចំនួនមួយគឺ (strData) ។ នៅពេល Function នេះវា​ដំណើរ​ការ​វានិងចាប់ផ្តើម​បង្កើត Variable មួយ​ឈ្មោះ​ mstrData ដែល​មាន​ទិន្នន័យ​ស្មើនឹង​ទទេរ ។

- ​បន្ទាប់មក​ទៀតត្រង់​ចំណុច For Loop ​វានឹង​បង្កើត Variable ថ្មីមួយទៀត​ឈ្មោះ i ​ដែល​តម្លៃ​ចាប់ផ្តើមរបស់វាស្មើ ១ រហូត​ដល់​តម្លៃ​វា​ស្មើនឹង​ចំនួន តួអក្សរសរុបនៃ strData ។ ដែល​ចំនួនតួអក្សរសរុបនោះបាន​មកពី Function Len (strData)

- ត្រង់Code Mid (strData, i, 1) ​មានន័យថា​ចាប់យកតួអក្សររបស់ strData ត្រង់ទីតាំង​ i និងយកមួយតួអក្សរ ។ ឧទាហរណ៍​ប្រសិនបើ strData=”abcde” ,​ i=1 នោះវាចាប់បាន a , i=2 នោះវាចាប់បាន b ,...

- ត្រង់ Code Asc (Mid (strData, i, 1) ) + 10 មានន័យថា​បន្ទាប់ពី Mid ចាប់បានតួអក្សរ​ណាមួយ​របស់ strData រួចហើយ​វានឹង​បំប្លែង​តួអក្សរនោះទៅជា​តម្លៃ​ ASCII code របស់តួអក្សរនោះ បន្ទាប់មក​ទៀតវាយក​តម្លៃ​នោះមកបូកនិងចំនួន ១០ ។ បន្ទាប់មក​ទៀត​វានឹង​បំប្លែង​តម្លៃ ASCII code នោះទៅជាតួអក្សរវិញ​តាមរយៈ ChrW (Asc (Mid (strData, i, 1) ) +10) ។ ជា​ចុងក្រោយ mstrData គឺស្មើ mstrData តជាមួយតួអក្សរ​ដែល​ទទួលបាន ។

​បង្កើត Class UserAccount 

UserAccount ជា Class ​បង្កើត​ឡើង​សម្រាប់ Store Reference ពី Database ។ ដែល​ក្នុង​នោះមាន Data Member ពីរគឺ ដែល​ប្រភេទ​ទិន្នន័យ​ជា string (userName, password) ​ដែល​យើង​បង្កើត​សម្រាប់​ជា Model ​សម្រួល​ដល់​ការងារ​ចាប់យក​ទិន្នន័យ​ពី Table ​ក្នុង​ Database

 ការ​សរសេរ​កូដ សម្រាប់​ដំណើរ​ការ​ក្នុង​ Form

​ដំណើរ​ការ​កូដ៖

OleDbConnection  ជា Class ​ភ្ជាប់ Application ជាមួយ Database ។ យើងបាន​សរសេរ​វាជា​លក្ខណៈ​ Global ដើម្បី​អាច​ប្រើ​ជា​ទូទៅ​ក្នុង​ Class

Event Load ​ក្នុង​ Form 

​ចំណុច​នេះ នៅពេល​កម្មវិធី​ដំណើការ វានឹង​ទៅ​បង្កើត object Connection ​ទៅកាន់​ Ms Access ​ឈ្មោះ con ​ដែល​មាន​ឈ្មោះ Database “db.accdb” ​ដែល​ទីតាំងវានៅ​ក្នុង​ Current Application របស់យើង​បន្ទាប់មក យើង​ប្រើ​ប្រាស់​ Method  Open () ដើម្បី​ដំណើរ​ការ​ Connection ។ ក្នុង​ដំណើរ​ការ​នេះយើង​ក៏​បានដាក់ Try Catch ​ពិនិត្យ Error Connection  ​នៅពេល​មាន Exception Error កើតឡើងវាបោះ Message  នៃ Error នោះ ។

InsertData Function 

យើង​ប្រើ​ប្រាស់ Function នេះ​សម្រាប់ Add ​ទិន្នន័យ​ទៅកាន់ Database Function នេះមាន parameter មួយជា​ប្រភេទ Model ​ដែល​យើងបាន​បង្កើត​ឈ្មោះ UserAccount

​នៅពេល​ Function ​ដំណើរ​ការ​វានឹង​ពិនិត្យ​ Connection ថាតើបានបើកហើយ ឬ​នៅ?

បើមិនបើក វានឹង​ទៅ Call function open () ម្តងទៀត ។

OleDbCommand ជា Class Execute Query Database  របស់ Ms Access

​សម្រាប់​ចំណុច​នេះ យើង​ប្រើ​ប្រាស់​សម្រាប់ Assign ​តម្លៃ​ពី Model របស់​យើងទៅ​ឲ្យ

cmd របស់ OleDbCommand

ជា Function ​សម្រាប់ Execute Command  Sql ប្រើ​សម្រាប់​នាំ Data​ ​ទៅកាន់ Database

GetData Function

GetMyData ជា Function មួយ​ដែល​មាន DataType ជា DataTable និងមាន Parameter ចំនួនមួយ​ដែល​មាន​ប្រភេទ​ទិន្នន័យ​ជា String ។ នៅពេល​ Function នេះ​ដំណើរ​ការ វានឹង​បង្កើត DataTable ថ្មីមួយគឺ obj ។ បន្ទាប់ទៀតវានិង​បង្កើត adapter object ​សម្រាប់ execute sqlQuery ចេញពី Database ។ បន្ទាប់មក​ទៀតវានិង Fill Data ទៅ​ឲ្យ DataTable (obj) ។ ជា​ចុងក្រោយ​វា return obj ទៅ​ឲ្យ Function នេះ ។

Event btnSignUp_Click

​នៅពេល​យើង​ធ្វើការ​ចុចលើ Button  ដំណើការ Event នេះ​ដែល​មានមុខងារ Insert ​ទិន្នន័យ​ទៅ Database ។  

យើង​ប្រើ​ប្រាស់  Ecryption ​សម្រាប់ Encrypte password

Insert ​ទិន្នន័យ​ទៅកាន់ DB  បើវាមិន​មាន Error វា return ​តម្លៃ​មួយ បន្ទាប់វា​ពិនិត្យ​លក្ខខណ្ឌបើស្មើ 1 ពិតវាបោះ Message  Success

Event btnSignIn_Click

​ដំណើរ​ការ​

ចាប់​តម្លៃ​ពី Control  txtUserName និង txtPassword ដាក់ចូលអញ្ញាត user & pass

ទាញ​ទិន្នន័យ​ពី Database ​ឈ្មោះ user_account  មកលើដាក់ obj នៃ DataTable

​ពិនិត្យ​លក្ខខណ្ឌបើសិន ទិន្នន័យ​ទាញមក ធំជាង ០ ពិតធ្វើ បើមិនស្មើ ០ ឬ តូចជាងមិនពិត​វានឹង​បោះ Message Error UserName or Password

យើងប្រកាស អញ្ញាតពីរ​ check ជា bool & usr ជា string រួច​ធ្វើការ loop ​អាស្រ័យ​ចំនួនធាតុពី object table ​ក្នុង loop យើង ពិនិត្យ​លក្ខខណ្ឌ បើ​តម្លៃ​នីមួយៗ​នៃ column ​ឈ្មោះ user_name ឈ្មោះ​ user  និង passwords  Decrypt មកវិញស្មើរ pass ពិតនោះ​វានឹង asign ​តម្លៃ true ទៅ​ឲ្យ​ check និង​តម្លៃ​នៃ user_name Asign ទៅ​ឲ្យ usr ។ បន្ទាប់ពី​បញ្ចប់ loop វាមកធ្វើលក្ខខណ្ឌ check បើពិត​វាបោះ message “Hello [var] , Successfully! ! ” បើមិនពិត វាបោះ Message User Name or Password Wrong! !

​ដំណើរ​ការ​កម្មវិធី​

♣♣♣ ដកស្រង់ចេញពី​ទស្សនាវដ្ដី​អាន-ANT និងកែ​សម្រួល​អត្ថបទចុះផ្សាយឡើងវិញនៅខែធ្នូ ឆ្នាំ ២០១៦ ដោយលោក ផុន គុណថៃ

♣♣♣ ​​វគ្គ​សិក្សា C# Beginining តម្លៃ ៧០ដុល្លា ចុចទីនេះ ដើម្បី​មើល Course Outline http://training.antkh.com/csharp_for_beginner.aspx

SmileSmileSmile ​សម្រាប់​វគ្គ​បើកថ្មីៗ​ជា​រៀងរាល់​សប្តាហ៍សូមចូល​ទៅកាន់​ www.antkh.com

SmileSmile ​កម្មវិធី Android ថ្មីៗ​របស់អាន-ANT ដែល​ចេញ​ក្នុង​ឆ្នាំ ២០១៦ http://antkh.com/tech/2315

SmileSmile ​សម្រាប់​កម្មវិធី​អានផេឌៀ ដំណើរ​ការ​លើ Windows (ចាប់ពី Windows 8 ឡើងទៅ) អាច Download ដោយឥតគិតថ្លៃ

មតិ និង​យោបល់​ទៅលើ​អត្ថបទ​នេះ (តាម Facebook)

ខាងក្រោម​នេះ​ជា​យោបល់​ផ្សេងៗ​របស់​អ្នកទស្សនា