联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2021-05-17 10:33

Coursework 4

Computer Processors (COMP1212/XJCO1212)

You should follow the instructions below on how to prepare your submission. Late submissions

are not accepted without mitigating circumstances. Feedback on late submissions

may not be provided within 3 weeks of submission.

Submission You must submit your work via Gradescope.

Deadline See Gradescope.

Weighting This piece of summative coursework is worth 25% of the module grade.

The Feistel cipher is a symmetric block cipher encryption framework which is the basis

of many modern day encryption algorithms. In this coursework you will implement a

Feistel cipher system as a hardware component and as a software implementation. In a

Feistel cipher the plaintext, P, to be encrypted is split into two equal size parts L0 and

R0 such that P = L0R0. A function F is applied to one half of the plaintext, combined

with a key, and the result is XOR’d with the other half of the plaintext. Feistel ciphers

often employ multiple rounds of this scheme. In general the scheme works as follows, for

all i = 0, . . . , n,

Li+1 = Ri

Ri+1 = Li ⊕ F(Ri

, Ki)

To decrypt an encrypted message using this cipher we can apply the same procedure

in reverse. For i = n, n ? 1, . . . , 0,

Ri = Li+1

Li = Ri+1 ⊕ F(Li+1, Ki)

For this coursework we are interested in the 16-bit Feistel cipher which uses 4 rounds.

The function F(A, B) = A⊕B. The keys are derived from a single 8-bit key K0 such that,

K0 = b7b6b5b4b3b2b1b0

K1 = b6b5b4b3b2b1b0b7

K2 = b5b4b3b2b1b0b7b6

K3 = b4b3b2b1b0b7b6b5

1

1. Produce an implementation, in HDL, of the described Feistel encryption scheme. The

chip should have the following preamble.

CHIP FeistelEncryption {

IN plaintext[16], key[8];

OUT ciphertext[16];

PARTS:

}

2. Write a program in HACK assembly, without using symbols, that implements the

described Feistel encryption system. The initial key, K0, will be stored in RAM[1],

and the 16-bit plaintext will be stored in RAM[2]. The result of the encryption

should be stored in RAM[0]. Your solution should be submitted in a file called

“FeistelEncryption.asm”.

You may use any RAM locations not specified in the description for intermediate

variables.

Question 1 is worth 10 marks, and Question 2 is worth 15 marks.

2


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp