Golang x Encryption and Decryption
การเข้ารหัสข้อมูล
มีจุดประสงค์เพื่อรักษาความลับของข้อมูล ข้อมูลนั้นจะถูกเปิดอ่านโดยบุคคลที่ได้รับอนุญาตเท่านั้น หลักการของการเข้ารหัสข้อมูลคือแปลงข้อมูล (encrypt) ไปอยู่ในรูปของข้อมูลที่ไม่สามารถอ่านได้โดยตรง ข้อมูลจะถูกถอดกลับด้วยกระบวนการถอดรหัส (decryption)
เรามาดูกันว่ามีโปรโตคอลอันไหนที่ใช้กันบ้าง
* AES (Advanced Encryption Standard) *
AES เป็นหนึ่งในโปรโตคอลการเข้ารหัสที่ใช้กันอย่างแพร่หลาย ใช้ข้อมูล 128 บิตในการเข้ารหัสและเป็น symmetric block cipher
ต่อไปเราจะใช้ Golang เป็นตัวอย่างในการทำ encrypt and decrypt โดยการใช้ AES…….
Step 1 : สร้างโปรเจค Golang
Step 2 : สร้าง Function EncryptAES
Step 3 : สร้าง Function DecryptAES
Step 4 : สร้าง Function CheckError
Step 5: ทำการเรียกใช้ Function EncryptAES ใน function main()
result :
145149d64a1a3c4025e67665001a3167
Step 6: ทำการเรียกใช้ Function EncryptAES และ ทำการเรียก Function DecryptAES ใน function main()
result :
145149d64a1a3c4025e67665001a3167
DECRYPTED: This is a secret
* RSA (Rivest–Shamir–Adleman) *
RSA เป็นการเข้าระหัสสาธารณะโดยการใช้ public-key cryptography เป็นอีกหนึ่งอัลกอริทึมที่นิยมใช้กันอย่างแพร่หลาย การเข้ารหัสและถอดรหัสจะต้องมี public key และ private key โดย public key สามารถเผยแพร่และใช้ร่วมกันได้ แต่ private key จะมีอยู่กับผู้รับเพื่อไว้ใช้ในการถอดรหัสเท่านั้น
เริ่มกันได้เลย…
Step 1 : สร้าง Project > create main.go
Step 2 : สร้างฟังก์ชั่น RSA_OAEP_Encrypt เพื่อทำการ encrypts plaintext 2048-bit RSA
Step 3 : สร้างฟังก์ชั่น RSA_OAEP_Decrypt เพื่อทำการ decrypt message ที่ถูก encrypts
Step 4 : สร้างฟังก์ชั่น CheckError
Step 5 : เรียกใช้ Function RSA_OAEP_Encryptใน main()
result :
Cipher Text: yqGrftw5yPZ+AXdEQztZv6+s8BZKGdJyIxbXlKFF2cryNsJ1yuPnK4dXR8l+DN9xJQxTcraV5ELjlWlvQ2urpKrlkkJ5W7piZnFg3HOuonq8VS6hnwMaIeQOir6U9lM9XGdJ54RohNN2eM+v0mEUIythkUk4W/GsqeQ9YxgVSlu4TEuJpKyjpFF8Qv0aX5wufxOdhpVs0vYHZt8soxjILxveSQ80+/DVb4q3yYbCm4Ek2IGf8Temgq3Eo1x6Ggq2HYpykAF+6Leuwi1oBk1flSvVuv92/B+38B4BtF0SV6vhIkc+fxj8fJI8y54Caz8s7dBd0GWz4PgTvG+aMtsJ2Q==
Step 6 : เพิ่ม Function RSA_OAEP_Decrypt ใน main() หลังจากทำการ encrypt message
result :
Plaintext: This is super secret message!
จบแล้วนะครัชชชชช หวังว่าจะมีประโยชน์ต่อคนที่สนใจไม่มากก็น้อยนะคร๊าบบบบบ!
แล้วพบกันใหม่…เด้อ