Problem hidden
This problem was hidden by Editorial Board member probably because it has incorrect language version or invalid test data, or description of the problem is not clear.

TAARR041 - Mã hóa thông tin bằng RC4

Ở bài trước (Thuật toán lập lịch khóa của hệ mật RC4) ta đã xác định được khóa  K' khi biết khóa K.

Sau khi xác định được K' (là trạng thái cuối cùng của mảng S sau khi kết thúc thuật toán lập lịch khóa) trong RC4 có một thuật toán sinh số ngẫu nhiên để từ K' sinh ra một dãy các byte ngẫu nhiên ki. Mỗi một byte ki sẽ được sử dụng để mã hóa một byte pi trong bản rõ bằng phép XOR: ci = pi XOR ki. Thuật toán sinh số ngẫu nhiên như sau.

i := 0
j := 0
while GeneratingOutput:
    i := (i + 1) mod 256
    j := (j + S[i]) mod 256
    swap values of S[i] and S[j]
    k := S[(S[i] + S[j]) mod 256]
    output k
endwhile

Hãy sử dụng kết quả của bài trước để thực hiện mã hóa một thông điệp được thể hiện dưới dạng một dãy byte.

Input

Dòng 1: klen - kích thước khóa K, tính bằng byte, 8 <= klen <= 256
Dòng 2: Khóa K gồm klen byte ngẫu nhiên được cho ở dạng số hexa, cách nhau bởi dấu cách.
Dòng 3: plen - kích thước bản rõ (plaintext), plen <= 2.000.000
Dòng 4: Bản rõ plaintext được cho ở dạng số hexa, cách nhau bởi dấu cách

Output

Dòng 1: Bản rõ ban đầu
Dòng 2: Bản mã tương ứng

Example

Input:
10
ce 2d 2b 51 2d a2 59 5e 80 7a 
30
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 

Output:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 
08 2b 8d a7 d0 62 e9 4e f6 27 2b ca 9b c0 f0 8e cb 9c 8a ea 02 12 a6 96 70 66 0f 48 1a 10  

Added by:Nguyễn Tuấn Anh
Date:2017-10-13
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:C

hide comments
2018-08-31 19:50:50
Mọi người ơi. Sao mà em bị lỗi phân đoạn vậy nè ( Vi phạm bộ nhớ không cho phép ).
Mã code đây ạ.
https://ideone.com/l68Z5w
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.