Điểm:1

Bộ lập lịch khóa Rivest Cipher 6 (RC6)

lá cờ us

Tôi đang cố gắng hiểu Key Scheduler được sử dụng trong RC6 và tôi có tổng cộng 3 câu hỏi. Các Trang Wikipedia về RC6 nói rằng sự khác biệt duy nhất giữa RC5 và bộ lập lịch khóa RC6 là nhiều từ được tạo ra từ khóa trong RC6. Trong ứng dụng của tôi, tôi đang sử dụng w=32bits, r=20rounds và b=16bytes.

Câu hỏi đầu tiên của tôi là đây là hai vòng lặp for riêng biệt hay vòng lặp for thứ hai lặp từ s-1 đến v bên trong vòng lặp for đầu tiên lặp từ 1 đến 2r+3? Câu hỏi thứ hai của tôi là tại sao chúng ta đặt A=B=i=j=0 và lệnh này và v=3xmax{c,2r+4} bên trong vòng lặp for đầu tiên?

Bài báo RC6 cũng cung cấp mã giả này:


Đầu vào: Khóa b byte do người dùng cung cấp được tải trước vào mảng c-word L[0... c - 1]

Số vòng r

Đầu ra: các phím tròn w-bit S[0... 2r + 3]

Quy trình: S[0] = Pw

cho i = 1 đến 2r ​​+ 3 làm:
S[i] = S[i - 1] + Qw
A = B = i = j = 0
v = 3 x max{c,2r+4}

cho s = 1 đến v làm:
{
A = S[i] = (S[i] + A + B)<<<3
B = L[j] = (L[j] + A + B)<<<(A + B)
i = (i + 1)mod(2r + 4)
j = (j + 1)modc
}

Câu hỏi thứ ba của tôi là về cách tải trước mảng từ L bằng khóa 16byte của tôi. Bài báo RC5 cho biết:

Bước thuật toán đầu tiên của việc mở rộng khóa là sao chép khóa bí mật K[0...b-1] vào một mảng L[0...c-1] gồm các từ c=b/u trong đó u= w/8 là số byte/từ. Hoạt động này được thực hiện một cách tự nhiên bằng cách sử dụng u byte khóa liên tiếp của K để lấp đầy từng từ liên tiếp trong L, byte thứ tự thấp đến byte thứ tự cao. Mọi vị trí byte chưa được lấp đầy của L đều bằng không.

Và mã giả cho hoạt động này là:

for i=b-1 downto 0 làm:
    L[i/u] = (L[i/u]<<<8)+K[i];

Để giải thích thêm về câu hỏi thứ ba của tôi, nếu tôi đang đi từ 15 xuống 0 và u của tôi = 32/8=4, làm cách nào tôi có thể sử dụng số thập phân để lập chỉ mục L? Ví dụ: khi tôi 15 tuổi, chúng ta có L[15/4]=(L[15/4]<<<8 + K[i]);

Điểm:2
lá cờ ru
  1. Các vòng lặp rời rạc. Nói cách khác, vòng lặp đầu tiên hoàn thành và sau đó vòng lặp thứ hai bắt đầu.

  2. A=B=i=j=0 được khởi tạo rõ ràng bằng 0 vì trong nhiều ngôn ngữ không chỉ định giá trị ban đầu có thể dẫn đến hành vi không xác định (ví dụ: đặt biến thành giá trị ngẫu nhiên nằm trong bộ nhớ cũ).Quá trình khởi tạo này và quá trình khởi tạo v xảy ra bên ngoài các vòng lặp.

  3. Biểu thức i/u nên được hiểu là số học số nguyên giống như C trả về một giá trị số nguyên (trong trường hợp này là lấy sàn). Do đó, trong ví dụ của bạn L[15/4]=L[3].

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.