どうやってC言語で3DESアルゴリズムを作成しますか

3DESアルゴリズムをC言語で実装するには、以下のステップに従ってください。

  1. 必要なヘッダをインポートする:
  2. #include <openssl/des.h>
  3. キーと平文を定義しています:
  4. DES_cblock key1, key2, key3;
    DES_cblock input;
    DES_cblock output;
  5. キーの設定:
  6. key1 に key1 を、key2 に key2 を、key3 に key3 を設定する
  7. 平文を入力する
  8. 入力部に平文をストアーする。
  9. DES_key_schedule 構造体を生成して初期化します。
  10. DES_key_schedule ks1、ks2、ks3;
    // キースケジュールテーブルの初期化
    DES_set_key((C_Block *)key1、&ks1);
    DES_set_key((C_Block *)key2、&ks2);
    DES_set_key((C_Block *)key3、&ks3);
  11. 暗号化処理
  12. DES_ecb3_暗号化(&入力, &出力, &鍵スケジュール1, &鍵スケジュール2, &鍵スケジュール3, DES_暗号化);
  13. 復号操作
  14. DES_ecb3_encrypt(&output, &input, &ks1, &ks2, &ks3, DES_DECRYPT);

完全なサンプルコードは次のとおりです。

#include <stdio.h>
#include <string.h>
#include <openssl/des.h>

int main() {
    DES_cblock key1, key2, key3;
    DES_cblock input;
    DES_cblock output;

    DES_string_to_key("key1", &key1);
    DES_string_to_key("key2", &key2);
    DES_string_to_key("key3", &key3);

    strcpy((char *)input, "plaintext");

    DES_key_schedule ks1, ks2, ks3;
    DES_set_key((C_Block *)key1, &ks1);
    DES_set_key((C_Block *)key2, &ks2);
    DES_set_key((C_Block *)key3, &ks3);

    DES_ecb3_encrypt(&input, &output, &ks1, &ks2, &ks3, DES_ENCRYPT);
    printf("加密结果:%s\n", output);

    DES_ecb3_encrypt(&output, &input, &ks1, &ks2, &ks3, DES_DECRYPT);
    printf("解密结果:%s\n", input);

    return 0;
}

DES処理のためのOpenSSLライブラリ中の「DES」関数を例として、3DES処理において引用しています。コンパイル時には、OpenSSLライブラリをリンクする必要があります。コマンドは以下の通りです。

gcc -o 3des 3des.c -lcrypto

3des は生成した実行ファイル名で、3des.c はソースファイル名です。

bannerAds