• <button id="ecio8"></button>
  • <li id="ecio8"></li>
    <s id="ecio8"></s>
    <dl id="ecio8"></dl>
    <center id="ecio8"><noscript id="ecio8"></noscript></center>
    • <table id="ecio8"><source id="ecio8"></source></table>
      <bdo id="ecio8"></bdo>
    • <s id="ecio8"></s>

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

      時間: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

      標(biāo)簽:

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

      昆明圖文信息
      蝴蝶泉(4A)-大理旅游
      蝴蝶泉(4A)-大理旅游
      油炸竹蟲
      油炸竹蟲
      酸筍煮魚(雞)
      酸筍煮魚(雞)
      竹筒飯
      竹筒飯
      香茅草烤魚
      香茅草烤魚
      檸檬烤魚
      檸檬烤魚
      昆明西山國家級風(fēng)景名勝區(qū)
      昆明西山國家級風(fēng)景名勝區(qū)
      昆明旅游索道攻略
      昆明旅游索道攻略
    • 高仿包包訂製

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

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

      欧美成人免费全部观看天天性色,欧美日韩视频一区三区二区,欧洲美女与动性zozozo,久久久国产99久久国产一
    • <button id="ecio8"></button>
    • <li id="ecio8"></li>
      <s id="ecio8"></s>
      <dl id="ecio8"></dl>
      <center id="ecio8"><noscript id="ecio8"></noscript></center>
      • <table id="ecio8"><source id="ecio8"></source></table>
        <bdo id="ecio8"></bdo>
      • <s id="ecio8"></s>
        主站蜘蛛池模板: 精品国产麻豆免费人成网站| 久久综合久久鬼色| 国产青草视频在线观看| 色台湾色综合网站| 小婷的性放荡日记h交| 亚洲天堂一区在线| 久久久久亚洲AV无码专区首JN| 色噜噜狠狠一区二区| 最新国产三级久久| 国产日韩在线亚洲字幕中文| 免费特级黄毛片| 一区二区三区在线|日本| 粗大的内捧猛烈进出小视频| 女邻居掀开短裙让我挺进| 免费国产小视频| 99精品无人区乱码在线观看| 欺凌小故事动图gif邪恶| 性之道在线观看| 免费人成年激情视频在线观看| eeuss影院在线奇兵区1页| 窝窝午夜看片国产精品人体宴| 欧美寡妇xxxx黑人猛交| 天天操天天干天天舔| 亚洲精品无码久久久久久| 一本伊大人香蕉在线观看 | 国产凸凹视频一区二区| 欧美激情一区二区三区在线| 尤物国午夜精品福利网站| 十八禁视频在线观看免费无码无遮挡骂过 | 又粗又猛又黄又爽无遮挡| 一级一级特黄女人精品毛片 | 精品一区二区久久| 国精无码欧精品亚洲一区| 午夜精品成人毛片| re99热久久这里只有精品| 欧美高清视频www夜色资源| 国产欧美亚洲精品a第一页| 久久亚洲伊人中字综合精品| 精品国产一区二区三区免费看| 在车子颠簸中进了老师的身体| 亚洲欧美成人日韩|