Beim Durchlaufen einiger Kryptographie-Sachen habe ich gesehen, dass RNGCryptoServiceProvider
2 Methoden hat:
und
%Vor%Und so frage ich:
Was ist ungerade beim Füllen eines Arrays von Bytes mit einer kryptografisch starken Folge von Zufallswerten, die einige (0 oder mehr) von ihnen sind Nullen? (es sind zufällige Werte und anscheinend wird es nicht viele Nullen geben, und immer noch ist Null eine reguläre Zahl)
Warum haben sie das Unterscheidungsmerkmal geschaffen?
Innerhalb des .NET-Frameworks GetNonZeroBytes (byte []) wird beim Generieren von PKCS # 1-Auffüllung für die RSA-Verschlüsselung verwendet, die 0x00
als Trennzeichen verwendet.
Mit einem Tool wie Reflector können Sie sehen, wie es in RSAPKCS1KeyExchangeFormatter.CreateKeyExchange (byte []) um Padding gemäß RFC 2313 , Abschnitt 8.1.2 ( RFC 3218 hat einige nette ASCII-Grafiken, die das Byte-Layout deutlicher darstellen.
GetNonZeroBytes (byte []) könnte auch sein verwendet, um Salz zu erzeugen. Die Cryptography StackExchange-Site hat eine ähnliche Frage , die darauf hinweist, dass dies vermieden werden sollte 0x00
soll Bibliotheken und APIs helfen, die das Salz als Null-terminierte Zeichenfolge behandeln, die das Salz versehentlich abschneiden würde. Wenn jedoch nicht P / Invoke verwendet wird, ist dies der Fall unwahrscheinlich, ein Problem in .NET zu sein.
Tags und Links c# .net-4.0 random encryption rngcryptoserviceprovider