Heim  >  Artikel  >  Backend-Entwicklung  >  Ist der Golang-Krypto-/Rand-Thread sicher?

Ist der Golang-Krypto-/Rand-Thread sicher?

王林
王林nach vorne
2024-02-09 12:45:08968Durchsuche

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

Golang ist eine Programmiersprache, die für ihre Effizienz und Parallelität bekannt ist. Allerdings standen die Verschlüsselung und Thread-Sicherheit von Golang schon immer im Fokus der Entwickler. In diesem Artikel teilt der PHP-Editor Banana einige Meinungen und Vorschläge zur Golang-Verschlüsselung und Golang-Thread-Sicherheit. Wir werden die Verschlüsselungsfunktionen von Golang untersuchen und erfahren, wie Thread-Sicherheit gewährleistet werden kann, um Entwicklern dabei zu helfen, Golang besser zu verstehen und anzuwenden. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel bietet Ihnen wertvolle Informationen und Anleitungen.

Die Quelle des Frageninhalts

math/rand.rand gibt read 不是线程安全的(共享源时)。加密/兰特怎么样?源代码指出它使用 getrandom(2)/dev/urandom an, aber es ist nicht klar, was bei gleichzeitigen Anrufen passiert.

Update: Kommentar hilft, den Unterschied zu verdeutlichen

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

Fadensicherheit:

  1. Werden gleichzeitige Anruferead in Panik geraten?
  2. Wird die zufällige Reihenfolge bei gleichzeitigen Aufrufen beibehalten? Oder können gleichzeitigen Anrufern doppelte Inhalte bereitgestellt werden?

Lösung

  1. rand.Reader 来自 crypto/rand MUSS für den gleichzeitigen Zugriff sicher sein, da es als „globale gemeinsame Instanz eines kryptografisch sicheren Zufallszahlengenerators“ definiert ist. Es gibt keine Möglichkeit, die Verwendung zwischen Paketen zu synchronisieren.
  2. rand.Read 来自 crypto/rand 是安全的,因为 rand.Reader ist sicher und greift nicht auf andere freigegebene Zustände zu.

Das obige ist der detaillierte Inhalt vonIst der Golang-Krypto-/Rand-Thread sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen