免费一级欧美片在线观看网站_国产一区再线_欧美日本一区二区高清播放视频_国产99久久精品一区二区300

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)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區
    昆明西山國家級風景名勝區
    昆明旅游索道攻略
    昆明旅游索道攻略
  • 短信驗證碼平臺 理財 WPS下載

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

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

    免费一级欧美片在线观看网站_国产一区再线_欧美日本一区二区高清播放视频_国产99久久精品一区二区300
    国产精品成人免费| 亚洲精品视频自拍| 成人永久看片免费视频天堂| 欧美国产成人在线| 成人精品免费看| 1024成人网色www| 欧美在线免费观看视频| 五月天一区二区| 日韩欧美中文字幕精品| 国产在线一区二区| 中文字幕精品综合| 一本在线高清不卡dvd| 亚洲成av人片一区二区| 日韩视频免费直播| 成人做爰69片免费看网站| 亚洲欧洲制服丝袜| 制服.丝袜.亚洲.另类.中文| 精彩视频一区二区三区| 国产精品全国免费观看高清 | 国产精品66部| 成人欧美一区二区三区黑人麻豆| 在线观看亚洲精品| 麻豆一区二区在线| 国产精品丝袜久久久久久app| 色一情一伦一子一伦一区| 爽好久久久欧美精品| 精品久久久久一区二区国产| k8久久久一区二区三区| 午夜精品久久久久久久99樱桃| 欧美岛国在线观看| aaa国产一区| 视频一区国产视频| 欧美激情一区二区在线| 欧美图区在线视频| 国产精品一区二区在线观看网站| 亚洲欧美日韩一区二区| 日韩欧美国产午夜精品| www.色精品| 日韩成人免费电影| 国产精品亲子伦对白| 欧美另类videos死尸| 国产成人在线网站| 亚洲h在线观看| 欧美精彩视频一区二区三区| 欧美色老头old∨ideo| 国产精品自在欧美一区| 亚洲国产欧美日韩另类综合| 久久先锋资源网| 欧美网站一区二区| 丁香桃色午夜亚洲一区二区三区| 亚洲成人一二三| 国产日韩欧美精品综合| 欧美精选在线播放| 97精品国产露脸对白| 久久97超碰国产精品超碰| 亚洲精品视频在线观看免费| 久久影院午夜片一区| 欧洲一区在线电影| 丁香婷婷综合色啪| 久久99国内精品| 亚洲愉拍自拍另类高清精品| 欧美激情综合五月色丁香小说| 欧美久久久久免费| 色先锋aa成人| 国产激情视频一区二区三区欧美| 性做久久久久久久免费看| 国产精品久久久久一区| 精品日产卡一卡二卡麻豆| 欧美性大战久久久久久久蜜臀 | 国产精品久久久久9999吃药| 日韩一级片在线观看| 欧洲日韩一区二区三区| 成人午夜在线视频| 精品无码三级在线观看视频| 亚洲成人第一页| 中文字幕综合网| 国产视频视频一区| 欧美大肚乱孕交hd孕妇| 欧美情侣在线播放| 色狠狠综合天天综合综合| 福利视频网站一区二区三区| 九九热在线视频观看这里只有精品| 亚洲国产日产av| 亚洲精品免费在线| 日韩一区日韩二区| 国产女人18水真多18精品一级做| 日韩免费看网站| 欧美精品99久久久**| 欧美在线高清视频| 色综合久久精品| 99re这里只有精品首页| 成人app在线| 高潮精品一区videoshd| 国产乱码精品一区二区三| 久久99国产乱子伦精品免费| 欧美aⅴ一区二区三区视频| 亚洲va国产天堂va久久en| 一区二区三区四区蜜桃| 亚洲欧美激情一区二区| 亚洲视频免费观看| 亚洲欧美偷拍三级| 亚洲天堂福利av| 18成人在线观看| 日韩一区有码在线| 亚洲日本va午夜在线影院| 《视频一区视频二区| 中文字幕一区二区三区视频| 国产精品久久久久久久久久久免费看 | 夜夜嗨av一区二区三区四季av | 欧美日韩一级二级| 欧美婷婷六月丁香综合色| 欧美丝袜丝nylons| 欧美日韩免费一区二区三区 | 欧美视频精品在线| 欧美日韩激情一区| 91精品一区二区三区在线观看| 69成人精品免费视频| 日韩一级精品视频在线观看| 欧美不卡激情三级在线观看| 欧美精品一区二区在线播放| 久久影音资源网| 欧美国产成人精品| 亚洲同性gay激情无套| 一区二区在线观看视频| 亚洲国产视频一区二区| 天天综合网 天天综合色| 日韩电影在线免费看| 久久不见久久见免费视频1| 国产在线不卡一区| 成人av网址在线| 一本高清dvd不卡在线观看| 欧美性生活影院| 制服视频三区第一页精品| 精品国产一区二区亚洲人成毛片| 久久久精品国产免费观看同学| 国产精品视频免费看| 亚洲精品免费在线| 天堂va蜜桃一区二区三区漫画版| 麻豆专区一区二区三区四区五区| 国产一区二区美女诱惑| 成人黄色777网| 欧美视频在线一区二区三区| 日韩欧美中文字幕公布| 日本一区二区三区免费乱视频| 国产精品成人一区二区艾草| 亚洲国产精品久久不卡毛片| 蜜桃久久久久久| 国产jizzjizz一区二区| 国产精品卡一卡二| 精品少妇一区二区| 成人精品小蝌蚪| 国产一区不卡视频| 国产综合色精品一区二区三区| 亚洲成av人**亚洲成av**| 美女被吸乳得到大胸91| 国产成人精品网址| 91搞黄在线观看| 日韩精品一区二| 国产精品国产自产拍高清av| 亚洲v精品v日韩v欧美v专区| 狠狠色丁香婷婷综合| 色综合视频一区二区三区高清| 7777精品伊人久久久大香线蕉超级流畅| 欧美精品一区二区三区一线天视频| 国产精品久久毛片| 日本美女一区二区三区| 成人精品免费视频| 7777精品久久久大香线蕉| 中文子幕无线码一区tr| 亚洲第一成年网| 国产999精品久久久久久| 欧美色涩在线第一页| 久久久国产一区二区三区四区小说 | 视频在线观看91| 国产成人免费视频| 777xxx欧美| 亚洲欧美自拍偷拍色图| 美腿丝袜亚洲色图| 91视频xxxx| 久久影院视频免费| 午夜激情久久久| 成人精品视频一区二区三区尤物| 欧美久久一区二区| 91精品在线麻豆| 一级做a爱片久久| 欧美国产精品一区二区三区| 五月天婷婷综合| 不卡电影免费在线播放一区| 欧美一区二区三区白人| 亚洲人被黑人高潮完整版| 精品夜夜嗨av一区二区三区| 欧美视频一区二区三区| 中文字幕av在线一区二区三区| 日韩成人午夜精品| 91国偷自产一区二区三区成为亚洲经典| 久久尤物电影视频在线观看| 日韩中文字幕麻豆| 色综合网站在线| 欧美激情在线看| 久久91精品久久久久久秒播|