Bagaimana untuk Menjana Integer Rawak Selamat dan Token dalam Go?

Susan Sarandon
Lepaskan: 2024-11-12 21:43:02
asal
157 orang telah melayarinya

How to Generate Secure Random Integers and Tokens in Go?

Generasi Int Rawak Selamat dengan "crypto/rand"

Dalam Go, menjana integer rawak selamat ialah tugas kritikal untuk pelbagai aplikasi kriptografi. Pakej "crypto/rand" menyediakan mekanisme untuk mencapainya dengan selamat.

Untuk menjana integer rawak antara 0 dan 27 menggunakan pakej "crypto/rand", anda boleh menggunakan fungsi berikut:

func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
Salin selepas log masuk

Fungsi ini memerlukan dua hujah:

  • rand: An pelaksanaan io.Reader, seperti crypto/rand.Reader, untuk menjana data rawak.
  • maks: Int besar yang mewakili sempadan atas untuk integer rawak.

Untuk menjana integer rawak antara 0 dan 27, gunakan yang berikut kod:

nBig, err := rand.Int(rand.Reader, big.NewInt(27))
if err != nil {
    panic(err)
}
n := nBig.Int64()
Salin selepas log masuk

Penjanaan Token Kriptografi

Untuk menjana token selamat, pendekatan yang lebih baik melibatkan penggunaan pakej "pengekodan/base32" untuk menjana kepingan bait rawak dan tukarkannya kepada rentetan menggunakan pengekodan base32. Berikut ialah contoh:

package main

import (
    "crypto/rand"
    "encoding/base32"
    "fmt"
)

func main() {
    randomBytes := make([]byte, 32)
    _, err := rand.Read(randomBytes)
    if err != nil {
        panic(err)
    }
    token := base32.StdEncoding.EncodeToString(randomBytes)[:27] // Adjust length as needed
    fmt.Println("Here is a random token: ", token)
}
Salin selepas log masuk

Pendekatan ini dianggap selamat untuk menjana token kerana ia menggunakan penjana nombor rawak yang selamat secara kriptografi dan menukarkan hasilnya kepada rentetan menggunakan pengekodan base32, memastikan token output tidak dapat diramalkan dan sukar. untuk meneka.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Integer Rawak Selamat dan Token dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan