2016-07-28 1 views
27

.NetCore에서 System.Security.Cryptography.RNGCryptoServiceProvider 클래스를 찾을 수 없습니다..Net Core의 RNGCryptoServiceProvider

암호화를위한 초기화 벡터를 생성하는 데 사용되므로 .NET Framework에서 이식하려고하는 애플리케이션에 필수적입니다.

다른 이름으로 존재합니까? 아니면이 기능을 수행하는 다른 방법이 있습니까? 제안 된 솔루션의

답변

8
+1

이것은 아마도 정답 일 수 있지만 * * *이 경우를 지정해야합니다. 예 : 'RandomNumberGenerator'는 암호로 안전한 난수를 돌려 주나요? 그렇다면 왜, 어떻게? 링크 전용 답변은 일반적으로 "frowned upon"입니다. –

44

System.Security.Cryptography.RandomNumberGenerator는 암호 학적-안전한 의사 난수 생성기 (CSPRNG) 구현의 기본 클래스입니다() RandomNumberGenerator.Create를 사용하는 것입니다. .NET Framework RandomNumberGenerator.Create()에서는 으로 다르게 구성하지 않는 한 RNGCryptoServiceProvider 인스턴스를 반환합니다. .NET 코어 RandomNumberGenerator.Create()은 BCryptGenRandom (Windows) 또는 OpenSSL의 난수 생성기 (! Windows)를 기반으로하는 은폐 형을 반환합니다.

RandomNumberGenerator.Create()은 .NET Core에서 RNG 인스턴스를 가져 오는 유일한 방법이며 .NET Core 및 .NET Framework에서 모두 작동하므로 가장 휴대하기 쉽습니다.

물론 IV를 생성하는 경우 인스턴스 메서드 SymmetricAlgorithm.GenerateIV()을 호출하여 CSPRNG를 내부적으로 사용하도록 할 수도 있습니다. 설명서에 따르면 무작위 IV가 인스턴스 (GenerateIVCreateEncryptor에 대한 다음 호출 전에 새 인스턴스를 생성하도록 강제로 사용될 수 있음)로 생성되므로 불필요합니다.

관련 문제