密碼學 - 反向密碼



什麼是反向密碼?

可以使用反向密碼演算法透過反向列印來加密訊息。因此,我們可以將“Hi this is Robot”加密為“toboR is siht iH”。如果要解碼,只需反轉反轉後的訊息即可獲得原始訊息。加密和解密的過程相同。

因此,我們可以看到,反向密碼是一種非常弱的密碼。從密文中可以看出它只是反向順序。

但是,我們將利用反向密碼程式作為我們的初始加密程式,因為它的程式碼易於理解。

Reverse Cipher

演算法

以下是加密和解密的反向密碼演算法:

加密演算法

明文訊息將是加密技術的輸入,密文訊息將是輸出。因此,步驟如下:

  • 步驟 1:以明文訊息作為輸入。

  • 步驟 2:然後反轉明文訊息中的字元順序以建立密文訊息。

  • 步驟 3:返回密文訊息作為輸出。

解密演算法

此外,密文訊息將是解密方法的輸入,明文訊息將是結果。因此,此演算法的步驟如下:

  • 步驟 1:以密文訊息作為輸入。

  • 步驟 2:然後反轉密文訊息中的字元順序以獲取原始明文訊息。

  • 步驟 3:最後返回明文訊息作為輸出。

示例

反向密碼是最基本的密碼型別之一。可以透過簡單地反轉明文的字元順序來對其進行加密。密文是結果。例如,反向密碼用於將訊息“HAT”加密為“TAH”。使用反向密碼,訊息“HELLO WORLD”被加密為“DLROW OLLEH”。加密和解碼訊息所使用的方法之間的唯一區別是反轉序列。因此,訊息“TAH”將被解碼為“HAT”。解密訊息“DLROW OLLEH”將是“HELLO WORLD”。

反向密碼的優勢在於它易於使用和理解。孩子們可以使用它向朋友傳送“秘密資訊”。如果加密的目的是使我們的通訊足夠安全以至於第三方無法讀取,那麼反向密碼的效能不佳,因為它是一種易於破解的簡單密碼。

實現

因此,我們可以透過使用 Python 的不同模組和函式以不同的方式實現此演算法。讓我們在下面的部分中一一瞭解這些方法:

  • 使用 Python

  • 使用 C++

  • 使用 Java

使用 Python

由於我們必須使用 Python 實現反向密碼演算法,因此我們將使用 Python 的字串操作功能。我們將使用切片在函式內部反轉給定的明文訊息。

表示式 message[::-1] 中使用了 Python 的切片功能來更改訊息的字元順序。

在 Python 中,可以透過使用符號 [::-1] 來反轉字串,這意味著從字串的末尾開始,以 -1 的步長向後移動。

以下是使用 Python 的 str 操作實現反向密碼:

示例

def reverse_cipher(message):
   # Reverse the message using slicing
   reversed_message = message[::-1]
   return reversed_message

# function execution
message = "Hiii! this is a reverse cipher algorithm"
encrypted_message = reverse_cipher(message)
print("The Original Message: ", message)
print("The Encrypted message:", encrypted_message)

以下是上述示例的輸出:

輸入/輸出
The Original Message:  Hiii! this is a reverse cipher algorithm
The Encrypted message: mhtirogla rehpic esrever a si siht !iiiH

使用 C++

此程式碼是用 C++ 實現的,基本上展示了反向密碼的工作原理。它首先定義金鑰訊息。之後,它使用 encrypt 函式對訊息進行加密,該函式反轉訊息的行為,並將結果儲存在 encryptedMessage 中。然後,使用 decrypt 函式對加密的訊息進行解密,該函式將字元恢復到其原始形式,並將結果記錄在 decryptedMessage 中。為了展示如何使用反向密碼方法進行加密和解密,它最後顯示了原始訊息、加密的訊息和解密的訊息。

以下是使用 C++ 實現反向密碼:

示例

#include <iostream>
#include <string>

std::string encrypt(std::string plaintext) {
   std::string ciphertext = "";
   for (int i = plaintext.length() - 1; i >= 0; i--) {
      ciphertext += plaintext[i];
   }
   return ciphertext;
}

std::string decrypt(std::string ciphertext) {
   std::string plaintext = "";
   for (int i = ciphertext.length() - 1; i >= 0; i--) {
      plaintext += ciphertext[i];
   }
   return plaintext;
}

int main() {
   std::string message = "Hello, This is a Reverse Cipher example!";
   std::string encryptedMessage = encrypt(message);
   std::string decryptedMessage = decrypt(encryptedMessage);

   std::cout << "Our Original Message: " << message << std::endl;
   std::cout << "The Encrypted message: " << encryptedMessage << std::endl;
   std::cout << "The Decrypted message: " << decryptedMessage << std::endl;

   return 0;
}

以下是上述示例的輸出:

輸入/輸出
Our Original Message: Hello, This is a Reverse Cipher example!
The Encrypted message: !elpmaxe rehpiC esreveR a si sihT ,olleH
The Decrypted message: Hello, This is a Reverse Cipher example!   

使用 Java

提供的 Java 程式碼的主要功能是使用 ReverseCipher 類對訊息進行加密並實現反向密碼方法。它首先解釋主要訊息“Hello, Tutorialspoint!”。然後,它使用 encrypt 方法對訊息進行加密,該方法轉換訊息。然後,它解析給定的訊息,將字元重定向回原始訊息。最後,它將原始訊息、加密的訊息和解密的訊息列印到控制檯,顯示加密和解密過程。

以下是使用 Java 實現反向密碼:

示例

// Class for reverse cipher
public class ReverseCipher {

   public static String encrypt(String plaintext) {
      StringBuilder ciphertext = new StringBuilder();
      for (int i = plaintext.length() - 1; i >= 0; i--) {
         ciphertext.append(plaintext.charAt(i));
      }
      return ciphertext.toString();
   }

   public static String decrypt(String ciphertext) {
      StringBuilder plaintext = new StringBuilder();
      for (int i = ciphertext.length() - 1; i >= 0; i--) {
         plaintext.append(ciphertext.charAt(i));
      }
      return plaintext.toString();
   }

   public static void main(String[] args) {
      String message = "Hello, Tutorialspoint!";
      String encryptedMsg = encrypt(message);
      String decryptedMsg = decrypt(encryptedMsg);

      System.out.println("The Original message is: " + message);
      System.out.println("The Encrypted message is: " + encryptedMsg);
      System.out.println("The Decrypted message is: " + decryptedMsg);
   }
}

以下是上述示例的輸出:

輸入/輸出
The Original message is: Hello, Tutorialspoint!
The Encrypted message is: !tniopslairotuT ,olleH
The Decrypted message is: Hello, Tutorialspoint!

特徵

以下是反向密碼演算法的一些特徵:

  • 反向密碼用於根據給定的模式反轉明文字串以將其轉換為密文。

  • 加密和解密的工作方式相同。

  • 在解密過程中,使用者只需要反轉密文即可獲得明文。

缺點

反向密碼演算法最大的缺點是它非常弱。因此,駭客可以輕鬆破解密文以瞭解實際或原始訊息。因此,反向密碼不被認為是維護安全通訊通道的良好選擇。

因此,反向密碼可用於教育目的或非常基本的加密需求。並且此演算法不適合保護機密資訊或通訊通道,因為它很容易受到攻擊。

總結

總體而言,反向密碼是一種非常簡單的密碼演算法或方法,藉助它,訊息的字元會被反轉以建立密文。因為它易於理解和實現。在安全性方面,它也非常弱。加密和解密都具有相同的文字反轉過程。

但是,此演算法不是保護非常敏感資訊的可靠方法。因為它很容易破解和攻擊,這意味著它非常容易受到攻擊。因此,它可以用於教育目的。

廣告

© . All rights reserved.