인증 토큰에 대해 C# 3.0 (.NET Framework 3.5) 용 cryptographically secure pseudorandom number generator (CSPRNG)의 빠른 구현이 있습니까?C#에서 암호 학적으로 안전한 의사 난수를 생성하려면 어떻게해야합니까?
44
A
답변
85
using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
byte[] tokenData = new byte[32];
rng.GetBytes(tokenData);
string token = Convert.ToBase64String(tokenData);
}
2
다음은 빠른 무슨 뜻인지에 따라 달라집니다 RNGCryptoServiceProvider 클래스
3
...
에는 정말 빠른 랜덤 생성기를 확보 없습니다. 빨리 원하면 일반 Random 클래스를 사용해야합니다. 보안을 원하면 암호화 네임 스페이스에서 임의 생성기를 사용해야하지만 상당히 느립니다. 당신은 단순히 둘 다 가질 수 없습니다.
+1
네이티브 암호화 구현으로 interop을 해보고 싶다면 뛰어난 성능 ('System.Random'보다 몇 배 빠름)과 보안 기능을 모두 가질 수 있습니다. – CodesInChaos
+9
@CodesInChaos : 그래서; 빠르고, 안전하고, 간단합니다 - 둘 중 하나를 선택하십시오. :) – Guffa
관련 문제
- 1. 파이썬에서 난수를 생성하려면 어떻게해야합니까?
- 2. CUDA FORTRAN에서 난수를 생성하려면 어떻게해야합니까?
- 3. Movable Type : 특정 범위의 난수를 생성하려면 어떻게해야합니까?
- 4. 마이크로 컨트롤러에서 난수를 효율적으로 생성하려면 어떻게해야합니까?
- 5. PHP로 암호로 안전한 난수를 어떻게 생성합니까?
- 6. iPhone에서 임의의 숫자를 생성하려면 어떻게해야합니까?
- 7. 이 RSA 기반 서명 (복구 포함) 체계가 암호 학적으로 안전한가요?
- 8. launchd 데몬을위한 안전한 암호 저장
- 9. 가장 안전한 파이썬 "암호"암호화
- 10. C#에서 난수를 사용하려면 어떻게해야합니까?
- 11. C에서 [0, n) 범위의 난수를 생성 하시겠습니까?
- 12. 새 컬렉션을 생성하려면 어떻게해야합니까?
- 13. C로 고정 파형 테이블을 생성하려면 어떻게해야합니까?
- 14. 간단하지만 안전한 암호화/암호 해독 asp.net에
- 15. Java를 사용하여 javadoc을 생성하려면 어떻게해야합니까?
- 16. 모든 Tetrominos의 목록을 생성하려면 어떻게해야합니까?
- 17. 비슷한 스펙 문서를 생성하려면 어떻게해야합니까?
- 18. 공식 문법에서 문장을 생성하려면 어떻게해야합니까?
- 19. Subversion 커밋에서 패치를 생성하려면 어떻게해야합니까?
- 20. Openx에서 통계를 다시 생성하려면 어떻게해야합니까?
- 21. DTD에서 샘플 XML을 생성하려면 어떻게해야합니까?
- 22. mysql에서 바운더리 리턴을 생성하려면 어떻게해야합니까?
- 23. C에서 exe 파일에 서명 또는 암호 사용 #
- 24. C에서 암호를 사용하여 암호 암호화 #
- 25. C에서 의사 결정을 실행하는 가장 좋은 방법은 #
- 26. 간단한 의사 어셈블러를 작성하려면 어떻게해야합니까?
- 27. C에서 SerialPort 및 스레드로 "안전한 핸들이 닫혔습니다."
- 28. 입니다 !! C에서 bool로 변환하는 안전한 방법 + +?
- 29. 안전한 ClientAccessPolicy.xml 파일을 작성하려면 어떻게해야합니까?
- 30. 서버에서 Excel 스프레드 시트를 생성하려면 어떻게해야합니까?
WinAPI GUID 생성기의 암호 해독은 V4 GUID 시퀀스가 의사 무작위이므로 초기 상태에서 UuidCreate 함수가 반환하는 다음 250,000 GUID까지 예측할 수 있음을 보여줍니다. 이것이 GUID를 암호 해독 (예 : 무작위 키)으로 사용해서는 안되는 이유입니다. (http://en.wikipedia.org/wiki/Globally_Unique_Identifier에서) – configurator
이것은 특별히 암호화가 아닙니다. 그리고 기계의 초기 상태를 예측하기가 어려울 수 있습니다. –
일반적인 공격은 서버가 다시 시작될 때까지 서버를 DDoS하는 것입니다. 그런 다음 초기 상태 (시스템 시계)를 예측하는 것이 훨씬 쉽습니다. – LaJmOn