Có triển khai nhanh nào cryptographically secure pseudorandom number generator (CSPRNG) cho C# 3.0 (Khuôn khổ .NET 3.5), cho mã thông báo xác thực không?Làm cách nào để tạo một số giả ngẫu nhiên mật mã trong C#?
Trả lời
using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
byte[] tokenData = new byte[32];
rng.GetBytes(tokenData);
string token = Convert.ToBase64String(tokenData);
}
Các RNGCryptoServiceProvider lớp
Điều đó phụ thuộc vào những gì bạn có nghĩa là bằng cách nhanh chóng ...
Không có thực sự nhanh chóng đảm bảo máy phát ngẫu nhiên. Nếu bạn muốn nhanh chóng, bạn nên sử dụng các lớp ngẫu nhiên thường xuyên. Nếu bạn muốn bảo mật, bạn nên sử dụng trình tạo ngẫu nhiên trong không gian tên Mật mã, nhưng điều đó chậm hơn đáng kể. Bạn chỉ đơn giản là không thể có cả hai.
Nếu bạn sẵn sàng thực hiện tương tác với việc triển khai mã hóa gốc, bạn có thể có cả hiệu năng xuất sắc (nhanh hơn vài lần so với 'System.Random') và bảo mật. – CodesInChaos
@CodesInChaos: Vì vậy; nhanh chóng, an toàn, đơn giản - chọn bất kỳ hai. :) – Guffa
- 1. Tạo một bộ tạo số giả ngẫu nhiên trong C#
- 2. Trình tạo số giả ngẫu nhiên - Phân phối số mũ
- 3. Cách tạo số ngẫu nhiên lớn C
- 4. Làm cách nào để tạo số ngẫu nhiên trong Dart?
- 5. Tạo số ngẫu nhiên trong C
- 6. Làm thế nào để 'ngẫu nhiên()' số ngẫu nhiên trong C (Linux)?
- 7. Làm cách nào để tạo số ngẫu nhiên trên iPhone?
- 8. Làm cách nào để định lượng chất lượng của trình tạo số giả ngẫu nhiên?
- 9. Làm cách nào để truyền một trình tạo số ngẫu nhiên C++ 11 cho một hàm?
- 10. Tạo một số thập phân ngẫu nhiên trong C#
- 11. Làm thế nào để tạo ra số ngẫu nhiên giả trong FPGA?
- 12. Làm cách nào để tạo số ngẫu nhiên bằng Python?
- 13. c - trình tạo số ngẫu nhiên
- 14. Số ngẫu nhiên trong C
- 15. Làm cách nào để tạo một đường dẫn ngẫu nhiên?
- 16. Làm thế nào để tạo ngẫu nhiên-băm-muối với mật mã
- 17. Tạo số ngẫu nhiên lớn
- 18. Số ngẫu nhiên trong POSIX C API
- 19. Tạo các số ngẫu nhiên một cách an toàn trong mục tiêu-C
- 20. Tạo các số nguyên giả ngẫu nhiên từ một khoảng thời gian thay đổi hiệu quả
- 21. Tạo cùng một chuỗi số ngẫu nhiên
- 22. MVC asp.net C# tạo ngẫu nhiên cùng một số
- 23. Số thập lục phân được tạo ngẫu nhiên trong C#
- 24. Trình tạo số ngẫu nhiên phân phối ngẫu nhiên
- 25. Tạo một dãy các số ngẫu nhiên
- 26. Tạo số ngẫu nhiên CUDA
- 27. C++ 11 số ngẫu nhiên
- 28. Các vấn đề với việc tạo một trình tạo số giả ngẫu nhiên nhiều lần?
- 29. Cách tạo số ngẫu nhiên khác nhau?
- 30. Làm cách nào để tạo một số nguyên 256 bit ngẫu nhiên trong Dart?
Mật mã của trình tạo WinAPI GUID cho thấy rằng, do chuỗi các GUIDs V4 là giả ngẫu nhiên, nên trạng thái ban đầu có thể dự đoán tới 250 000 GUID được trả về bởi hàm UuidCreate. Đây là lý do tại sao GUID không nên được sử dụng trong mật mã, ví dụ như các khóa ngẫu nhiên. (từ http://en.wikipedia.org/wiki/Globally_Unique_Identifier) – configurator
Đây không phải là mật mã cụ thể, tho. Và, rất khó để dự đoán trạng thái ban đầu của máy. –
Một cuộc tấn công phổ biến là DDoS một máy chủ cho đến khi nó được khởi động lại. Sau đó, dự đoán trạng thái ban đầu (đồng hồ hệ thống) dễ dàng hơn nhiều. – LaJmOn