गो (Golang) में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग के लिए पूर्ण गाइड
गो (Golang) एक शक्तिशाली मानक लाइब्रेरी crypto प्रदान करता है, जिसमें डेटा की क्रिप्टोग्राफिक सुरक्षा को लागू करने के लिए सभी आवश्यक उपकरण शामिल हैं। इस लेख में, हम गो में एन्क्रिप्शन और हैशिंग के साथ काम करने की बुनियादी क्षमताओं पर विस्तार से चर्चा करेंगे, जिसमें सममित (AES), असममित (RSA) एन्क्रिप्शन, हैश फ़ंक्शन (SHA-256) और bcrypt के साथ पासवर्ड सुरक्षा शामिल है।
1. गो में डेटा हैशिंग
हैशिंग निश्चित लंबाई के डेटा का एकतरफा रूपांतरण है। गो में, इसके लिए पैकेज crypto/sha256 (और अन्य SHA परिवार) का उपयोग किया जाता है।
उदाहरण: स्ट्रिंग का SHA-256 हैश
package main
import ( "crypto/sha256" "fmt")
func main() { data := "PythonLib.ru — शैक्षिक वेबसाइट" hash := sha256.Sum256([]byte(data)) fmt.Printf("SHA-256: %x", hash)}आउटपुट: SHA-256: 3c4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4
स्ट्रीमिंग हैशिंग (बड़ी फ़ाइलों) के लिए hash.Hash इंटरफ़ेस का उपयोग करें:
package main
import ( "crypto/sha256" "fmt" "io" "strings")
func main() { h := sha256.New() reader := strings.NewReader("हैशिंग के लिए डेटा स्ट्रीम") io.Copy(h, reader) fmt.Printf("स्ट्रीमिंग SHA-256: %x", h.Sum(nil))}2. bcrypt के साथ पासवर्ड सुरक्षा
पासवर्ड स्टोर करने के लिए कभी भी सामान्य हैश (SHA-256) का उपयोग न करें। bcrypt का उपयोग करें - यह सॉल्ट और अनुकूली जटिलता वाला एल्गोरिदम है। गो में, इसे पैकेज golang.org/x/crypto/bcrypt द्वारा कार्यान्वित किया जाता है।
इंस्टॉलेशन:
go get golang.org/x/crypto/bcryptपासवर्ड हैशिंग और सत्यापन का उदाहरण:
package main
import ( "fmt" "golang.org/x/crypto/bcrypt")
func main() { password := "MySecurePass123!"
// हैशिंग (डिफ़ॉल्ट लागत = 10) hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { panic(err) } fmt.Printf("bcrypt हैश: %s", hash)
// पासवर्ड सत्यापन err = bcrypt.CompareHashAndPassword(hash, []byte(password)) if err != nil { fmt.Println("गलत पासवर्ड") } else { fmt.Println("पासवर्ड सही है!") }}3. सममित एन्क्रिप्शन AES-GCM
AES (एडवांस्ड एन्क्रिप्शन स्टैंडर्ड) एक सममित एल्गोरिदम है। अनुशंसित मोड GCM (गैलोइस/काउंटर मोड) है, जो प्रमाणीकरण (AEAD) प्रदान करता है। पैकेज crypto/aes और crypto/cipher का उपयोग करें।
AES-256-GCM एन्क्रिप्शन और डिक्रिप्शन का उदाहरण:
package main
import ( "crypto/aes" "crypto/cipher" "crypto/rand" "encoding/hex" "fmt" "io")
func main() { key := []byte("AES-256 के लिए 32-बाइट कुंजी!!!") // 32 बाइट्स plaintext := []byte("PythonLib के लिए गुप्त संदेश")
// एन्क्रिप्शन ciphertext, nonce := encryptAESGCM(key, plaintext) fmt.Printf("एन्क्रिप्टेड: %s", hex.EncodeToString(ciphertext))
// डिक्रिप्शन decrypted, err := decryptAESGCM(key, ciphertext, nonce) if err != nil { panic(err) } fmt.Printf("डिक्रिप्टेड: %s", decrypted)}
func encryptAESGCM(key, plaintext []byte) (ciphertext, nonce []byte) { block, _ := aes.NewCipher(key) gcm, _ := cipher.NewGCM(block) nonce = make([]byte, gcm.NonceSize()) io.ReadFull(rand.Reader, nonce) return gcm.Seal(nil, nonce, plaintext, nil), nonce}
func decryptAESGCM(key, ciphertext, nonce []byte) ([]byte, error) { block, _ := aes.NewCipher(key) gcm, _ := cipher.NewGCM(block) return gcm.Open(nil, nonce, ciphertext, nil)}4. असममित एन्क्रिप्शन RSA
RSA उपयोग करता है