Maison >développement back-end >Golang >Le thread Golang crypto/rand est-il sûr ?

Le thread Golang crypto/rand est-il sûr ?

王林
王林avant
2024-02-09 12:45:081038parcourir

Golang 加密/兰德线程安全吗?

Golang est un langage de programmation connu pour son efficacité et sa concurrence. Cependant, le cryptage et la sécurité des threads de Golang ont toujours été au centre des préoccupations des développeurs. Dans cet article, l'éditeur php Banana partagera quelques opinions et suggestions sur le cryptage Golang et la sécurité des threads Golang. Nous explorerons les fonctionnalités de chiffrement de Golang et comment garantir la sécurité des threads pour aider les développeurs à mieux comprendre et appliquer Golang. Que vous soyez débutant ou développeur expérimenté, cet article vous fournira des informations et des conseils précieux.

La source du contenu des questions

math/rand.rand indique read 不是线程安全的(共享源时)。加密/兰特怎么样?源代码指出它使用 getrandom(2)/dev/urandom, mais on ne sait pas clairement ce qui se passe avec les appels simultanés.

Mise à jour : le commentaire aide à clarifier la différence

crypto/rand.Reader.Read(b []byte)
crypto/rand.Read(b []byte)

Sécurité du fil :

  1. Les appels simultanésread vont-ils paniquer ?
  2. La séquence aléatoire sera-t-elle maintenue lors d'appels simultanés ? Ou le contenu dupliqué peut-il être diffusé à des appelants simultanés ?

Solution

  1. rand.Reader 来自 crypto/rand DOIT être sécurisé pour un accès simultané car il est défini comme une « instance mondiale partagée d'un générateur de nombres aléatoires cryptographiquement sécurisé ». Il n'existe aucun moyen de synchroniser son utilisation entre les packages.
  2. rand.Read 来自 crypto/rand 是安全的,因为 rand.Reader est sûr et n'accède à aucun autre état partagé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer