どのようにC ++で文字列暗号化アルゴリズムを実装しますか。
C++ 文字列暗号化アルゴリズムはシーザー暗号、ヴィジュネル暗号などの一般的な暗号化アルゴリズムを利用することができます。 以下は、シーザー暗号を使用した文字列暗号化の実装コードの例です。
#include <iostream>
#include <string>
std::string encryptCaesar(const std::string& plaintext, int shift) {
std::string ciphertext = "";
for (char c : plaintext) {
if (isalpha(c)) {
char start = isupper(c) ? 'A' : 'a';
c = (c - start + shift) % 26 + start;
}
ciphertext += c;
}
return ciphertext;
}
int main() {
std::string plaintext = "Hello, World!";
int shift = 3;
std::string ciphertext = encryptCaesar(plaintext, shift);
std::cout << "Ciphertext: " << ciphertext << std::endl;
return 0;
}
上で示したコードでは、encryptCaesar 関数は平文の文字列とシフト量を引数として受け取り、暗号化された暗号文の文字列を返します。各文字に対して、それが英字であれば、文字の大文字小文字に応じて開始値(‘A’ または ‘a’)を決定し、その文字にシフト量を加算して 26 で剰余を取ります。最後に、各文字を暗号文の文字列に連結します。main 関数では、この関数の使用法を文字列の暗号化において示しました。出力の結果は以下の通りです。
Ciphertext: Khoor, Zruog!
注意:これは単なる簡単な例であり、シーザー暗号は暗号化プロセスが可逆であり、総当たり攻撃を受けやすいので、実際には使用するのは安全ではありません。実用的な用途では、より強力で安全な暗号化アルゴリズムを使用する必要があります。