Skip to content

Commit f02bd17

Browse files
committed
Add encryption and decryption programs for four-digit integers
This commit adds two C programs: one for encrypting a four-digit integer and another for decrypting the encrypted integer back to the original number. The encryption program replaces each digit with (digit + 7) % 10, swaps the first and third digits, and swaps the second and fourth digits. The decryption program reverses these steps by using (digit + 3) % 10 for decryption, then swaps the digits back to their original positions.
1 parent 162312d commit f02bd17

File tree

1 file changed

+95
-0
lines changed
  • Structured Task Deveolpment in C/Excercises

1 file changed

+95
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// (Enforcing Privacy with Cryptography) The explosive growth of Internet communications and data storage on Internet-connected computers has greatly increased privacy concerns. The field of cryptography is concerned with coding data to make it difficult (and hopefully—with the most advanced schemes—impossible) for unauthorized users to read. In this exercise you’ll investigate a simple scheme for encrypting and decrypting data. A company that wants to send data over the Internet has asked you to write a program that will encrypt it so that it may be transmitted more securely. All the data is transmitted as four-digit integers. Your application should read a four-digit integer entered by the user and encrypt it as follows: Replace each digit with the result of adding 7 to the digit and getting the remainder after dividing the new value by 10. Then swap the first digit with the third, and swap the second digit with the fourth. Then print the encrypted integer. Write a separate application that inputs an encrypted four-digit integer and decrypts it (by reversing the encryption scheme) to form the original number. [Optional reading project: Research “public key cryptography” in general and the PGP (Pretty Good Privacy) specific public key scheme. You may also want to investigate the RSA scheme, which is widely used in industrial-strength applications.]
2+
3+
////////////////////////////
4+
// Encryption Program //
5+
////////////////////////////
6+
7+
#include <stdio.h>
8+
9+
int encrypt(int);
10+
11+
int main()
12+
{
13+
int originalNum, encryptedNum;
14+
15+
printf("Enter a four-digit integer: ");
16+
scanf("%d", &originalNum);
17+
18+
encryptedNum = encrypt(originalNum);
19+
20+
printf("Encrypted integer: %04d\n", encryptedNum);
21+
22+
return 0;
23+
}
24+
25+
int encrypt(int num)
26+
{
27+
int encrypted = 0;
28+
int digits[4];
29+
30+
// Split into digits and encrypt
31+
for (int i = 3; i >= 0; i--)
32+
{
33+
digits[i] = (num % 10 + 7) % 10;
34+
num /= 10;
35+
}
36+
37+
// Swap the digits
38+
encrypted = digits[2] * 1000 + digits[3] * 100 + digits[0] * 10 + digits[1];
39+
40+
return encrypted;
41+
}
42+
43+
////////////////////////////
44+
// Decryption Program //
45+
////////////////////////////
46+
47+
#include <stdio.h>
48+
49+
int decrypt(int);
50+
51+
int main()
52+
{
53+
int encryptedNum, decryptedNum;
54+
55+
printf("Enter an encrypted four-digit integer: ");
56+
scanf("%d", &encryptedNum);
57+
58+
decryptedNum = decrypt(encryptedNum);
59+
60+
printf("Decrypted integer: %04d\n", decryptedNum);
61+
62+
return 0;
63+
}
64+
65+
int decrypt(int num)
66+
{
67+
int decrypted = 0;
68+
int digits[4];
69+
70+
// Split into digits
71+
for (int i = 3; i >= 0; i--)
72+
{
73+
digits[i] = num % 10;
74+
num /= 10;
75+
}
76+
77+
// Decrypt the digits: Reverse the encryption logic
78+
for (int i = 0; i < 4; i++)
79+
{
80+
digits[i] = (digits[i] + 3) % 10; // Reverse of adding 7 and modulo 10
81+
}
82+
83+
// Swap the digits back
84+
decrypted = digits[2] * 1000 + digits[3] * 100 + digits[0] * 10 + digits[1];
85+
86+
return decrypted;
87+
}
88+
89+
// How It Works
90+
91+
// Encryption:
92+
// Each digit of the input number is replaced with (digit + 7) % 10.The first digit is swapped with the third, and the second digit is swapped with the fourth to get the encrypted number.
93+
94+
// Decryption:
95+
// The process reverses the encryption steps. Since (digit + 7) % 10 is used for encryption, and we need to reverse this, we use (digit + 3) % 10 for decryption. This works because adding 3 undoes the original addition of 7 when considering modulo 10 arithmetic (since 10 - 7 = 3). Digits are swapped back to their original positions.

0 commit comments

Comments
 (0)