2013-06-18 178 views
14

Tôi hỏi câu hỏi này để xác nhận xem lớp RijndaelManaged trong C# có tương đương với mã hóa AES hay không. Từ những gì tôi đã đọc, RijndaelManaged là thuật toán được lựa chọn để thực hiện AES encyrption. Ai đó có thể xác nhận điều này không?- Lớp RijndaelManaged trong C# có tương đương với mã hóa AES không?

Thuật toán RijndaelManaged có an toàn được sử dụng cho dự án web không? Cảm ơn :)

+1

Tôi nghĩ rằng thuật toán có thể được sử dụng cho AES Encryption –

+0

Cảm ơn Mert Akkaya :) – Matthew

Trả lời

18

Thuật toán AES được chọn trong một cuộc thi do NIST tổ chức từ năm 1997 đến năm 2000. Người chiến thắng là một thuật toán được gọi là Rijndael.

NIST đã chỉ định rằng thuật toán AES là có kích thước khối 128 bit. Khi Rijndael hỗ trợ các kích thước khối 128, 160, 192, 224 và 256 bit, đặc tả AES cuối cùng khác với đặc điểm kỹ thuật Rijndael ban đầu trong vấn đề đó. Nói cách khác, "AES" và "Rijndael" là cùng một thuật toán, ngoại trừ "AES" bị giới hạn ở kích thước khối 128 bit.

Kích thước khối không có gì để làm với kích thước khóa mặc dù. Thuật toán được đề cập hỗ trợ các khóa 128, 192 và 256 bit. Các khóa dài hơn không nhất thiết phải "mạnh hơn", bởi vì AES có lý thuyết nhất định weaknesses. Dù bằng cách nào, các khóa 128 bit cũng đủ dài cho tương lai gần.

Như EkoostikMartin cho biết, AES không thể phá vỡ cho đến nay. Nhưng mật mã là khó, và thậm chí cả các chuyên gia cũng không làm cho nó đúng. Sử dụng nguyên thủy mật mã thô mà không biết chính xác những gì bạn đang làm sẽ có khả năng dẫn đến một cái gì đó xấu. Nói cách khác, mật mã rất hiếm khi liên kết yếu nhất trong "chuỗi an ninh".

6

Nếu bạn muốn sử dụng thuật toán AES, chỉ cần sử dụng lớp AesManaged-http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged%28v=vs.100%29.aspx

Lớp RijndaelManaged bạn tham chiếu không chính xác phù hợp với các thông số kỹ thuật AES, chủ yếu là vì nó cung cấp cho tùy chọn như xa như kích thước khối. AesManaged sử dụng kích thước khối 128 bit như được chỉ định.

Theo như là "an toàn" cho một dự án web, nó là một phương pháp mã hóa rất mạnh (nó không bao giờ bị hỏng như tôi biết), nhưng giống như bất cứ điều gì nó phải được sử dụng một cách chính xác.

+0

Cảm ơn :) Vì vậy, được RijndaelManaged mạnh hơn AesManaged ? Tôi đã đọc rằng nó có thể hỗ trợ kích thước khóa 256 bit. – Matthew

+0

'AesManaged' có thể hỗ trợ khóa 256 bit - http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged.keysize(v=vs.100).aspx – EkoostikMartin

+2

@Matthew RijndaelQuản lý có thể được sử dụng theo cách không tương thích với AES, do đó ít bị giám sát hơn, nên được coi là ít bảo mật hơn, do đó không sử dụng nó. – jbtule

0

Có một vài khác biệt, đáng chú ý là khả năng thay đổi kích thước khối cũng như kích thước khóa. (AES sử dụng kích thước khối cố định 128 theo như tôi biết)
Nếu bạn đang sử dụng CFB ở Rijndael, kích thước khối sẽ điều chỉnh theo kích thước phản hồi, có nghĩa là bạn không thể đảm bảo kích thước khối là 128.

Để đảm bảo tính tương đương, bạn sẽ phải sử dụng kích thước khối là 128 và tránh được CFB hoặc đảm bảo kích thước phản hồi cũng là 128.

Một điều cần lưu ý: nếu bạn đang sử dụng IV tĩnh với CFB thì mật mã sẽ được xác định. Tránh điều này như là tiền tố IV sau đó có thể dễ dàng xác định và sử dụng để giải mã dữ liệu của bạn.

(xin lỗi để nâng cao một chủ đề cũ, nhưng điều này thông tin đã không được vào đây)