2.2 Hill kriptotizimi misollar
Hill kriptotizimi, matnning har bir harfini sonlar soniyasi ko'rinishida ifodalaydi va matn har bir blokini katta bir matriksda ifodalaydi. Hill kriptotizimi ko'pincha 2x2 va 3x3 matrikslarni qo'llaydi.Quyidagi misollar Hill kriptotizimi usulida matnlarni shifrlash uchun 3x3 matriksni ko'rsatadi:
Kalit matriks: 2 1 3
1 3 1
1 2 1
Matn: "hello world"
Shifrlangan matn: "SLYODZGUJMK"
Kalit matriks: 6 24 1
13 16 10
20 17 15
Matn: "goodbye"
Shifrlangan matn: "HDSXONIJ"
Kalit matriks: 17 17 5
21 18 21
2 2 19
Matn: "abcdefghijklmnopqrstuvwxyz"
Shifrlangan matn: "EQKLTSWLZRHGCOVJYXPFDAMNBU"
Hill kriptotizimini c++ da dastur kodi
#include
#include
using namespace std;
string encrypt(string message, int key[3][3]) {
int n = message.length();
int col, row, sum;
// Add padding if necessary
if (n % 3 != 0) {
for (int i = 0; i < 3 - n % 3; i++) {
message += 'X';
}
n = message.length();
}
// Encrypt the message
string result = "";
for (int i = 0; i < n; i += 3) {
for (int j = 0; j < 3; j++) {
sum = 0;
for (int k = 0; k < 3; k++) {
sum += key[j][k] * (message[i + k] - 'a');
}
col = sum % 26;
result += col + 'A';
}
}
return result;
}
int main() {
// Define the key matrix
int key[3][3] = {{17, 17, 5}, {21, 18, 21}, {2, 2, 19}};
// Define the message to be encrypted
string message = "abcdefghijklmnopqrstuvwxyz";
// Encrypt the message
Do'stlaringiz bilan baham: |