日本欧洲视频一区_国模极品一区二区三区_国产熟女一区二区三区五月婷_亚洲AV成人精品日韩一区18p

CSC 172代寫、Java/C++程序設(shè)計(jì)代做

時(shí)間:2024-03-19  來源:  作者: 我要糾錯(cuò)



CSC 172 – Project 1
• You may work on and submit your project individually or in groups of 2 students.
• If you work in a group you will have to prepare an extended README file to specify
who wrote each part of the code for maintaining clarity and transparency within the
group project.
• You are only allowed to cooperate with your group members, and you are not permitted
to share your solution with other students in any way.
Task
You will implement a cipher specified below using Java programming language. It shall
encrypt/decrypt text files including plaintext/ciphertext.
Background
1. Encryption is the process of encoding information or data in such a way that only
authorized parties can access it. This is typically done using algorithms and secret
keys to transform the original data into an unintelligible form known as ciphertext.
2. Plaintext refers to the original, unencrypted data or message that is intended to be
kept confidential.
3. Ciphertext refers to the encrypted form of data or information that has undergone
encryption.
Working with files
To encrypt content of a text file you have to:
• Read the file: open the file you want to encrypt and read its contents into memory.
• Convert to binary.
• Encrypt the data: use the presented encryption algorithm and the user secret key to
encrypt the data read from the file.
• Do NOT convert back to characters.
• Write encrypted data to file: save the encrypted data to a new file.
To decrypt content of a text file you have to:
1
• Read the file: open the file you want to decrypt and read its contents into memory
(content should be just long sequence of zeros and ones).
• Decrypt the data: use the presented decryption algorithm and the user secret key to
encrypt the data read from the file.
• Convert to characters.
• Write decrypted data to file: save the encrypted data to a new file.
1 Algorithm Description
The algorithm encrypts fixed number of bits only (64 bits). To encrypt longer input use the
simple ECB (Electronic Codebook) mode. Here’s how it works:
• Divide the data into blocks: the plaintext data is divided into fixed-size blocks of 64
bits.
• Apply encryption to each block independently: each block of plaintext is encrypted
independently using the same secret key and encryption algorithm. The same key is
used for each block.
• Output the encrypted blocks: the resulting ciphertext blocks are concatenated together
to form the complete ciphertext.
• If the last block doesn’t have enough bits, it needs to be padded to meet the required
block size. This process is known as padding. Use zero padding: append zero bits
to the end of the block until it reaches the required size. (Do not worry about extra
characters at the end when you decrypt.)
Include methods to encrypt/decrypt a single block of plaintext/ciphertext that implements the following symmetric-key encryption algorithm:
2
Your output shall be a block of 64 zeros and ones. (Do not represent the output block in a
Hex notation. If you do that you get -10%.) Encryption and decryption are almost the
same, but for decryption you need to use subkeys in a reverse order: k10, k9, ...k1
3
1. Input Splitting: The plaintext block of 64 bits is divided into two halves of 32 bits.
Let’s denote these halves as L0 and R0.
2. Round Function Application: In each round, a round function f is applied to one
half of the data, typically the right half Ri
, using the round key ki of 32 bits. The
result of the function is then XORed with the other half Li
.
Li+1 = Ri
Ri+1 = Li ⊕ f(Ri
, ki)
3. Swapping: After each round, the halves are swapped so that the left half becomes
the right half, and vice versa.
4. Iteration: Steps 2 and 3 are repeated 10 times.
5. Output Concatenation: After all rounds are completed, the final output consists of
the two halves (L10 and R10) concatenated together. This forms the ciphertext.
1.1 The f - function
The f - function (round function) works as follows:
1. XOR gate: The 32 input bits are XORed with the round key ki
.
2. Splitting: The 32 bits are divided into four pieces of 8 bits.
4
3. S-box: For each piece of 8 bits the output of a S-box is computed (’looked up in the
S table’).
4. Output Concatenation: All four pieces are concatenated together to form 32 bits.
5. Permutation: 32 bits are permuted using permutation P.
S is a substitution box transformation (Rijndael S-box):
The table of the S-box, stated in hexadecimal for compactness. Permutation P is given by
the table:
See the last page if clarification about S and P is needed.
5
1.2 Computing subkeys
The round keys of 32 bits (subkeys ki) are derived from the input key of 56 bits by means
of the key schedule (total of 10 subkeys) using the following schedule:
1. Splitting: The main key k of 56 bits is divided into two halves of 28 bits. Let’s denote
these halves as C0 and D0.
2. Transformation Function: In each round, a left shift by 1 function LS1 is applied
separately to both half’s of the data, typically the right half Ri
, using the round key
ki of 32 bits. The result of the function is then XORed with the other half Li
.
Ci+1 = LS1(Ci)
Di+1 = LS1(Di)
3. Concatenation: In each round two halves (Ci and Di) are concatenated together.
The first (left most) 32 bits forms the round subkey ki
.
4. Iteration: Steps 2 and 3 are repeated 10 times.
6
1.3 Required methods
Your implementation must include the following methods:
• Custom xorIt(binary1, binary2)
• Custom shiftIt(binaryInput)
• Custom permuteIt(binaryInput)
• Custom SubstitutionS(binaryInput)
• functionF(rightHalf, subkey)
• encryptBlock(block, inputKey),
• decryptBlock(block, inputKey),
• encryption(longBinaryInput, inputKey),
• decryption(longBinaryInput, inputKey),
• keyScheduleTransform(inputKey),
• runTests()
• You can have additional helper functions. Custom means you can NOT use
ready methods and must write your own methods.
1.4 Build-in tests
The runTests() mathod shall be invoked when user runs the program and it shall print
output for the following test cases:
• encryptBloc(all ones, all ones)
• encryptBloc(all zeros, all ones)
• encryptBloc(all zeros, zeros)
• encryptBloc(block,input key), where:
block = 1100110010000000000001110101111100010001100101111010001001001100
input key = all zeros
• decryptBlock(all ones, all ones)
• decryptBlock(all zeros, all ones)
7
• decryptBlock(all zeros, zeros)
• decryptBlock(block,input key), where:
block = 0101011010001110111001000111100001001110010001100110000011110101
input key = all ones
• decryptBlock(block,input key), where:
block = 0011000101110111011100100101001001001101011010100110011111010111
input key = all zeros
When running the program
When the user runs the program, it should print output for the test cases from section 1.4.
The program should then prompt the user to choose whether they want to encrypt or decrypt
and specify the filename to process. Additionally, the program should ask for a filename to
save the output, and an appropriate file should be created for this purpose.
Running Tests:
Output for: encryption(all ones, all ones)
0101011010001110111001000111100001001110010001100110000011110101
Output for: encryption(all zeros, all ones)
1100111010001000100011011010110110110010100101011001100000101000
Output for: encryption(all zeros, all zeros)
1010100101110001000110111000011110110001101110011001111100001010
Output for: encryption(block,all zeros), where:
block = 1100110010000000000001110101111100010001100101111010001001001100
0010101110011011010001010111000010110110101011111010000101100101
Output for: decryption(all ones, all ones)
0100111001000110011000001111010101010110100011101110010001111000
Output for: decryption(all zeros, all ones)
1011001010010101100110000010100011001110100010001000110110101101
Output for: decryption(all zeros, all zeros)
1011000110111001100111110000101010101001011100010001101110000111
Output for: decryption(block,all ones), where:
block = 0101011010001110111001000111100001001110010001100110000011110101
1111111111111111111111111111111111111111111111111111111111111111
Output for: decryption(block,all zeros), where:
block = 0011000101110111011100100101001001001101011010100110011111010111
1111111111111111111111111111111111111111111111111111111111111111
Do you want to encrypt or decrypt (E/D): E
Filename: data.txt
Secret key: 10101101011101110101010101011100010110101011100010101010
8
Output file: data1.txt
Submission Requirements
Zip (archive) all the project source files and a README file and save it as a Project1LastName.zip
file. Include your LastName (+partner) in the filename. Upload the file to the appropriate
folder on Gradescope. Your README file should include name of the members of the team
and any specific instruction which is useful for the project. It should also include all the features (including additional features) that you have implemented. Make sure all your source
files are properly commented so that user can browse your code without getting lost.
2 Grading
The rubric for this assignment is available through Gradescope. Your solution will be tested
with private test cases.
0 points if the program doesn’t compile. No points for the rest. Grading complete.
2.1 Important note about Academic Honesty
If some of the tasks are challenging or not for you, feel free to discuss with others but all
discussion have to be on high level without writing code or pseudocode. Once you sit down
and start coding, all the code you write should be your own . Using ready code from other
sources (internet, friends, chatGPT etc.) will be considered as a violation of the academic
honesty. After submitting your work, you should be able to explain your code in details, if
so requested by lab TAs or by the instructor. Your initial points may be reduced, if unable
to answer questions on your submitted work.
3 Hints
• Text file sbox.txt contains a constant - S- box look up table that you can use.
• S- box example:
– Let’s say we want to compute the substitution for the byte 53 (in binary 01010011).
– We’ll first convert 53 to its row and column indices.
– The first hex digit (5) represents the row index.
– The second hex digit (3) represents the column index.
– So, for 53, the row index is 5 and the column index is 3.
– Now, we’ll look up the value in the S-box using these indices.
9
– The value at row 5 and column 3 in the S-Box is ed (in binary 11101101).
• Permutation table example: Consider table (3x3):
Sample input: 101111000
Output after permutation: 001111010
– The permutation table rearranges the elements of the input according to the
specified positions.
– Each number in the permutation table represents the position of the corresponding
element in the input.
– For example, the element at position 1 of the input (value 1) becomes the element
at position 4 of the output.
– Similarly, the element at position 9 of the input (value 0) becomes the element at
position 1 of the output.
Sample input 2: 111000111
請加QQ:99515681  郵箱:99515681@qq.com   WX:codehelp

標(biāo)簽:

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:代寫MTRN4010、代做MATLAB程序設(shè)計(jì)
  • 下一篇:CS 213代做、Java設(shè)計(jì)編程代寫
  • 無相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風(fēng)景名勝區(qū)
    昆明西山國家級風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗(yàn)證碼平臺 幣安官網(wǎng)下載 歐冠直播 WPS下載

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
    ICP備06013414號-3 公安備 42010502001045

    日本欧洲视频一区_国模极品一区二区三区_国产熟女一区二区三区五月婷_亚洲AV成人精品日韩一区18p

              9000px;">

                        欧美96一区二区免费视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲综合激情网| av在线这里只有精品| 久久久欧美精品sm网站| 成人avav影音| 亚洲一级二级在线| 精品久久久久久久久久久久包黑料 | 亚瑟在线精品视频| 国产成人在线视频网站| 自拍偷拍亚洲激情| 欧美一区2区视频在线观看| 精品一区二区影视| 亚洲欧洲中文日韩久久av乱码| 欧美精品视频www在线观看| 紧缚奴在线一区二区三区| 亚洲视频一区二区免费在线观看| 日韩一区二区不卡| 色综合天天综合网国产成人综合天 | 亚洲国产成人av好男人在线观看| 欧美成人aa大片| 色久优优欧美色久优优| 久久福利资源站| 亚洲成精国产精品女| 久久综合九色综合欧美亚洲| 欧美肥妇bbw| 99精品国产热久久91蜜凸| 久久精品久久精品| 亚洲成av人在线观看| 中文字幕二三区不卡| 91精品国产91久久久久久最新毛片| 成+人+亚洲+综合天堂| 老司机精品视频一区二区三区| 亚洲欧美另类久久久精品| 国产亚洲成aⅴ人片在线观看| 欧美高清hd18日本| 欧美日韩精品是欧美日韩精品| 99精品视频一区二区三区| 国产精品一区二区男女羞羞无遮挡| 天堂蜜桃91精品| 亚洲成人动漫在线观看| 伊人婷婷欧美激情| 国产精品久久免费看| 久久九九久精品国产免费直播| 日韩欧美www| 日韩欧美aaaaaa| 欧美一二区视频| 日韩欧美三级在线| 欧美精品一区二区在线观看| 日韩免费在线观看| 日韩精品专区在线| 欧美岛国在线观看| 欧美成va人片在线观看| 日韩精品一区二区三区四区| 欧美大片在线观看| 久久影院午夜论| 久久精品视频在线看| 欧美国产日韩一二三区| 国产精品毛片大码女人| 亚洲欧洲av色图| 亚洲综合激情小说| 日本欧美一区二区| 国产一区999| 99热这里都是精品| 欧美日韩综合色| 91麻豆精品国产91久久久资源速度| 欧美伊人久久久久久久久影院| 欧美日韩国产一区二区三区地区| 欧美精品色一区二区三区| 欧美电视剧在线观看完整版| 欧美国产一区在线| 亚洲图片一区二区| 精品一区二区综合| 91美女片黄在线观看91美女| 在线观看欧美黄色| 欧美成人国产一区二区| 中文字幕av在线一区二区三区| 亚洲欧美日韩国产综合在线| 五月婷婷综合网| 国产成人综合网| 91精品办公室少妇高潮对白| 在线电影院国产精品| 国产色91在线| 亚洲一区二区三区国产| 美国精品在线观看| 色狠狠av一区二区三区| 亚洲精品在线一区二区| 一区二区三区四区在线免费观看| 日韩av电影一区| 裸体歌舞表演一区二区| 成人午夜av电影| 日韩电影在线免费| 国产女主播在线一区二区| 国产精品久久久久影院老司| 日韩美女主播在线视频一区二区三区 | 亚洲国产精品精华液ab| 琪琪久久久久日韩精品| 一区在线中文字幕| 欧美理论在线播放| 欧美精品一区二区高清在线观看| 99久久国产综合精品麻豆| 4438x成人网最大色成网站| 日韩欧美国产一区二区在线播放| ...xxx性欧美| 经典三级一区二区| 成人18视频在线播放| 理论电影国产精品| 国产高清久久久久| 成人午夜激情视频| 国产亚洲短视频| 日韩精品一区二区三区中文不卡 | 色综合一区二区| 处破女av一区二区| 国产精品一区二区三区网站| 美女爽到高潮91| 激情久久久久久久久久久久久久久久| 日韩精品免费视频人成| 美女在线一区二区| 精品伊人久久久久7777人| 国产.精品.日韩.另类.中文.在线.播放 | 久久久三级国产网站| 欧美性videosxxxxx| kk眼镜猥琐国模调教系列一区二区| 亚洲一区二区影院| 亚洲精品高清在线观看| 日韩精品电影在线观看| 国产露脸91国语对白| 国产高清不卡二三区| 91精品国产高清一区二区三区蜜臀| 日韩成人一级片| 视频一区在线播放| 国产欧美日韩综合精品一区二区| 欧美亚男人的天堂| 日韩电影在线看| 亚洲精品国产视频| 91精品国产综合久久精品| 久久99久久久欧美国产| 91麻豆成人久久精品二区三区| 最新热久久免费视频| 欧美久久久久久久久久| 国产一区二区三区四区五区美女 | 成人黄色av网站在线| 亚洲欧美日韩在线| 欧美激情自拍偷拍| 精品黑人一区二区三区久久| 91视频免费看| 日韩欧美一级特黄在线播放| 国产91丝袜在线观看| 五月激情六月综合| 亚洲成人免费看| 国产精品久久久久一区| 亚洲精品一区二区精华| 国产精品亚洲成人| 欧美激情一区二区三区四区| 91浏览器入口在线观看| av色综合久久天堂av综合| 亚洲国产成人porn| 舔着乳尖日韩一区| 国产凹凸在线观看一区二区| 国产福利一区二区| 日韩成人伦理电影在线观看| 亚洲综合一区二区| 亚洲欧洲国产日韩| 三级欧美韩日大片在线看| 中文一区一区三区高中清不卡| 久久久久久夜精品精品免费| 日韩欧美中文一区| 9191精品国产综合久久久久久| 欧美三级在线播放| 欧美mv日韩mv亚洲| 亚洲精品自拍动漫在线| 免播放器亚洲一区| 国产亚洲欧美色| 色网站国产精品| 经典三级一区二区| 欧美军同video69gay| 亚洲图片激情小说| 欧美日韩激情一区| 国产女主播一区| 开心九九激情九九欧美日韩精美视频电影| 国产91在线|亚洲| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 午夜精品一区在线观看| 最新高清无码专区| 欧美午夜电影在线播放| 青青草国产成人99久久| 亚洲成av人片在线观看| 1024成人网| 亚洲三级在线播放| 欧美国产日韩亚洲一区| 国产精品情趣视频| 精品入口麻豆88视频| 欧美日韩一二三区| 欧美狂野另类xxxxoooo| 91网站在线播放| 欧美私人免费视频| 欧美伊人久久久久久久久影院| 91免费精品国自产拍在线不卡| 成人激情电影免费在线观看| 粉嫩av亚洲一区二区图片|