狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线

CSC 172代寫、Java/C++程序設計代做

時間:2024-03-19  來源:  作者: 我要糾錯



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

標簽:

掃一掃在手機打開當前頁
  • 上一篇:代寫MTRN4010、代做MATLAB程序設計
  • 下一篇:CS 213代做、Java設計編程代寫
  • 無相關信息
    昆明生活資訊

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

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线
  • <dl id="akume"></dl>
  • <noscript id="akume"><object id="akume"></object></noscript>
  • <nav id="akume"><dl id="akume"></dl></nav>
  • <rt id="akume"></rt>
    <dl id="akume"><acronym id="akume"></acronym></dl><dl id="akume"><xmp id="akume"></xmp></dl>
    成人免费性视频| 国产综合免费视频| www.com黄色片| 国产精品97在线| 香港三级韩国三级日本三级| 日本a级片在线播放| 成人国产一区二区三区| 人妻激情另类乱人伦人妻| 4444在线观看| 免费看日本黄色| 精品少妇人欧美激情在线观看| 国产又大又黄又猛| 亚洲免费999| 四虎成人在线播放| 免费成人深夜夜行网站视频| 黄色一级片黄色| 国产 日韩 亚洲 欧美| 免费国产黄色网址| 亚洲狼人综合干| 中文字幕丰满乱码| 8x8ⅹ国产精品一区二区二区| 大伊香蕉精品视频在线| 日韩欧美精品在线观看视频| 亚洲黄色a v| 四虎1515hh.com| 男人添女人下部高潮视频在观看| 免费看毛片的网址| 免费在线观看的av网站| 日韩av片网站| 国产女教师bbwbbwbbw| 啊啊啊一区二区| 爽爽爽在线观看| 国产一区二区三区小说| 天天色综合天天色| 国产激情片在线观看| 国产精品人人妻人人爽人人牛| 国产精品久久久久久久av福利| 欧美中文字幕在线观看视频| 在线观看亚洲色图| 国产毛片视频网站| 手机av在线网站| 日本熟妇人妻中出| 欧美 日韩 国产精品| 国产精品国产亚洲精品看不卡| 欧美激情精品久久久久久小说| 欧美 日本 亚洲| 成 年 人 黄 色 大 片大 全| 日韩免费毛片视频| 午夜久久久久久久久久久| 东北少妇不带套对白| 日本高清免费观看| 成人亚洲视频在线观看| 国产免费裸体视频| av动漫免费观看| 五月天开心婷婷| 日韩亚洲在线视频| 欧美 国产 日本| 久久99久久99精品| 视色,视色影院,视色影库,视色网| www.xxx亚洲| 人妻无码视频一区二区三区 | 午夜精品久久久久久久99热影院| 又大又硬又爽免费视频| 中文字幕一区二区三区四区五区人 | av免费在线播放网站| 日韩欧美视频免费在线观看| www.桃色.com| 日本77777| 成人日韩在线视频| www.色欧美| 黄色片免费网址| 天天成人综合网| 在线观看av的网址| 国产小视频免费| 亚洲美免无码中文字幕在线 | 亚洲天堂一区二区在线观看| 国产一二三区av| 一级黄色在线播放| 久久国产精品免费观看| 久久最新免费视频| 国产一区二区三区在线免费| 99热亚洲精品| 色综合av综合无码综合网站| 成人免费xxxxx在线视频| 日韩精品你懂的| 中文字幕55页| 免费成人午夜视频| www.日本一区| 中国女人做爰视频| 亚洲欧洲日产国码无码久久99| 在线观看的毛片| 成人高清dvd| 激情婷婷综合网| 在线观看污视频| 国产a级片免费观看| 天堂av8在线| 国产高清av在线播放| 超碰在线97免费| 激情五月六月婷婷| 日韩在线第三页| 最新视频 - x88av| 欧美性大战久久久久xxx| 在线黄色免费看| 草草久久久无码国产专区| 色www免费视频| av在线播放亚洲| youjizz.com亚洲| 欧美日韩激情视频在线观看| 永久av免费在线观看| 高清在线观看免费| 菠萝蜜视频在线观看入口| 精品久久久久久久无码| 国产情侣第一页| av不卡在线免费观看| 国产精品无码专区av在线播放 | 免费不卡av网站| 日韩有码免费视频| 97超碰国产精品| 肉色超薄丝袜脚交| 亚洲色图久久久| 午夜视频在线瓜伦| 各处沟厕大尺度偷拍女厕嘘嘘| 天堂av免费看| 性鲍视频在线观看| 日本不卡一区二区在线观看| 国内外成人激情视频| 99在线精品免费视频| 青青草影院在线观看| 在线播放免费视频| 中文字幕成人在线视频| 日本特黄a级片| 免费看a级黄色片| 少妇av一区二区三区无码| 欧美日韩福利在线| 麻豆一区二区三区在线观看| 91视频福利网| 一级网站在线观看| 热久久久久久久久| 老司机av福利| 黄色网zhan| 2019日韩中文字幕mv| 久操网在线观看| 免费欧美一级视频| 成年人视频在线免费| 99re在线视频免费观看| 国产一区二区视频免费在线观看| 激情综合网俺也去| 国产三级生活片| 男女啪啪免费观看| 分分操这里只有精品| 国产一区二区三区精彩视频| 免费看黄色一级大片| 一本色道久久亚洲综合精品蜜桃| www.51色.com| 免费高清一区二区三区| 日韩中文字幕在线视频观看| 91人人澡人人爽人人精品| www.超碰97.com| 日韩网站在线免费观看| 日日碰狠狠躁久久躁婷婷| 一路向西2在线观看| 国风产精品一区二区| 2022亚洲天堂| 特黄特黄一级片| av动漫免费看| 99亚洲精品视频| 亚洲 高清 成人 动漫| 爱豆国产剧免费观看大全剧苏畅 | 亚洲激情免费视频| 青青草国产精品视频| 黄色手机在线视频| www.国产二区| 最新天堂在线视频| 成人免费在线小视频| 日韩欧美理论片| 免费av网址在线| 99re6这里有精品热视频| 手机在线免费观看毛片| 日韩久久久久久久久久久久| jizz欧美激情18| heyzo国产| 亚洲最新免费视频| 国产一级不卡毛片| 妞干网在线观看视频| 国产资源中文字幕| 久久精品香蕉视频| 精品国偷自产一区二区三区| 日本中文字幕观看| 三上悠亚在线一区二区| 美女av免费在线观看| 欧美高清中文字幕| 黄色一级片网址| 毛片毛片毛片毛| 性猛交ⅹ×××乱大交| jizz欧美激情18| jizz18女人| 91欧美视频在线| 午夜视频在线网站| 亚欧激情乱码久久久久久久久| 国产精品人人妻人人爽人人牛|