美女扒开腿免费视频_蜜桃传媒一区二区亚洲av_先锋影音av在线_少妇一级淫片免费放播放_日本泡妞xxxx免费视频软件_一色道久久88加勒比一_熟女少妇一区二区三区_老司机免费视频_潘金莲一级黄色片_精品国产精品国产精品_黑人巨大猛交丰满少妇

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
請(qǐng)加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)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級(jí)風(fēng)景名勝區(qū)
    昆明西山國家級(jí)風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • 短信驗(yàn)證碼平臺(tái) 理財(cái) WPS下載

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

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

    美女扒开腿免费视频_蜜桃传媒一区二区亚洲av_先锋影音av在线_少妇一级淫片免费放播放_日本泡妞xxxx免费视频软件_一色道久久88加勒比一_熟女少妇一区二区三区_老司机免费视频_潘金莲一级黄色片_精品国产精品国产精品_黑人巨大猛交丰满少妇
    肉色超薄丝袜脚交69xx图片| 久久人人爽人人爽人人片| 色综合久久久无码中文字幕波多| 99在线视频免费| 亚洲国产av一区| 麻豆国产精品一区| 中文字幕av网址| 日韩中文字幕电影| 国产精品扒开腿做爽爽| 一区二区三区四区免费| 中字幕一区二区三区乱码| 一级片黄色录像| 亚洲国产成人精品综合99| 国产a免费视频| 野战少妇38p| 国产不卡一二三| av网在线播放| 五月天av网站| 中文写幕一区二区三区免费观成熟| 欧洲第一无人区观看| 麻豆av免费看| 久久亚洲AV成人无码国产野外| 免费福利视频网站| www.av免费| 成人免费看片载| 四虎国产精品成人免费入口| 日韩av毛片在线观看| 白嫩情侣偷拍呻吟刺激| 成年人网站免费在线观看| av黄色免费网站| 神马久久精品综合| 日本黄色动态图| 国产又黄又粗又猛又爽的| 香蕉在线观看视频| 一级二级黄色片| 激情综合丁香五月| 亚洲激情图片网| 第四色在线视频| 欧美日韩色视频| 大黑人交xxx极品hd| 国产免费无码一区二区视频| 少妇精品一区二区| 国产成人久久久久| 波多野结衣 在线| 国内自拍偷拍视频| 欧美xxxooo| mm131丰满少妇人体欣赏图| 69xx绿帽三人行| 五月婷婷婷婷婷| 精品无人区无码乱码毛片国产| 美女又黄又免费的视频| 色哟哟免费视频| 国产精品久久久免费观看| 亚洲少妇xxx| 中文字幕第4页| 国产草草浮力影院| 特一级黄色录像| 摸摸摸bbb毛毛毛片| 亚洲 欧美 日韩在线| 亚洲AV成人精品| 久久无码人妻一区二区三区| 久久免费手机视频| 日本二区在线观看| 中文字幕一区二区三区人妻电影| 亚洲av永久无码精品| 韩国三级与黑人| 不卡的一区二区| 中文字幕无人区二| 一级全黄裸体片| 中文字幕一区二区三区人妻在线视频 | 国产福利视频网站| 国产一二三av| 日韩免费av一区| 亚洲人与黑人屁股眼交| 国产黄片一区二区三区| 久久一区二区电影| 波多野结衣影院| 日韩人妻无码一区二区三区| 美国黄色一级毛片| 欧美色图亚洲激情| 国产三级在线观看完整版| 国精产品视频一二二区| 日本女人性生活视频| 日韩精品一区二区三区在线视频| 老熟妇高潮一区二区三区| 日批视频在线看| av在线天堂网| 一本色道综合久久欧美日韩精品| 国产老熟女伦老熟妇露脸| 少妇毛片一区二区三区| 夜夜春很很躁夜夜躁| 在线观看亚洲网站| 蜜桃色一区二区三区| 亚洲观看黄色网| 欧美福利在线视频| 性xxxxxxxxx| 亚洲精品乱码久久久久久久久久久久 | 青青草视频成人| 亚欧精品视频一区二区三区| 成人做爰视频网站| 老湿机69福利| 亚洲天堂av网站| 中文字幕伦理片| 亚洲精品无码一区二区| 无码h肉动漫在线观看| 三级黄色在线观看| 国产一线在线观看| www久久久久久久| av地址在线观看| 一区二区三区四区免费| 国产jizz18女人高潮| 亚洲国产精品狼友在线观看| 九九热免费在线| 青青草视频网站| 人人澡人人澡人人看| 无码一区二区精品| 免费91在线观看| 中文字幕av网址| 国产大学生av| 国产馆在线观看| 国产制服丝袜在线| 欧产日产国产v| 久久av红桃一区二区禁漫| 狠狠人妻久久久久久综合蜜桃| 亚洲一区二区三区三州| 精品国产av色一区二区深夜久久| 欧美三级日本三级| 日本二区在线观看| 国产麻豆天美果冻无码视频| 久久久久久久久久影视| 黄色录像免费观看| 在线观看亚洲大片短视频| 国产男男chinese网站| 国产大尺度视频| 无码人妻丰满熟妇啪啪网站| 亚洲一区二区三区三州| 免费高清在线观看电视| 亚洲国产精品一区二区久久hs| 夜夜春很很躁夜夜躁| 欧洲美一区二区三区亚洲| 99re久久精品国产| 尤物视频最新网址| 97人妻精品一区二区三区免费| 校园春色 亚洲| 男女羞羞免费视频| 亚洲无人区码一码二码三码的含义 | 五月天丁香社区| 国产艳妇疯狂做爰视频 | 91免费在线看片| 91免费在线看片| 国产美女久久久久久| 久久久久久久麻豆| 殴美一级黄色片| 日韩a级片在线观看| 美女日批在线观看| 无码任你躁久久久久久老妇| www.17c.com喷水少妇| 日韩精品视频一区二区| 中文字幕一区二区三区人妻| 亚洲午夜福利在线观看| 日本一道本视频| 四虎免费在线视频| 色诱av手机版| 精品中文字幕在线播放 | 国产午夜精品理论片| 91日韩中文字幕| 亚洲一区二区三区三州| 久久久高清视频| 3d动漫精品啪啪一区二区下载| av网站免费在线看| 黄色av片三级三级三级免费看| 神马久久精品综合| 久久国产免费视频| 人妻精品久久久久中文字幕| 黄色aaa视频| 黑人狂躁日本娇小| 高清中文字幕mv的电影| 成人无码av片在线观看| 国产乱国产乱老熟300| xxxx黄色片| 天天综合天天做| 欧美bbbbb性bbbbb视频| 香蕉成人在线视频| 欧美激情 亚洲| 国产黄色小视频网站| 日本黄色动态图| 91禁男男在线观看| 国产xxxx视频| 国产极品国产极品| 亚洲第一成人网站| 亚洲做受高潮无遮挡| 天天做夜夜爱爱爱| 国产色视频一区二区三区qq号| 加勒比婷婷色综合久久| 国产精品三级在线观看无码| 少妇被躁爽到高潮无码文| 91成人在线免费视频| 欧美xxxx日本和非洲| 免费黄色激情视频| 中文字幕国产专区|