Golang x Encryption and Decryption

Thakrit Ratchakote
Tech INNO
Published in
2 min readApr 29, 2021

การเข้ารหัสข้อมูล

มีจุดประสงค์เพื่อรักษาความลับของข้อมูล ข้อมูลนั้นจะถูกเปิดอ่านโดยบุคคลที่ได้รับอนุญาตเท่านั้น หลักการของการเข้ารหัสข้อมูลคือแปลงข้อมูล (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!

จบแล้วนะครัชชชชช หวังว่าจะมีประโยชน์ต่อคนที่สนใจไม่มากก็น้อยนะคร๊าบบบบบ!

แล้วพบกันใหม่…เด้อ

--

--