1

NTL ライブラリを使用して、ElGamal 暗号化/復号化アルゴリズムを実装しています。私はそれが機能しているという点に到達しましたが、アルゴリズムはメッセージを整数に変換して暗号化できるようにすることを望んでいます。
したがって、1234 のような数値を入力するとすべて問題なく動作しますが、C++ 文字列 (std::string) を ZZ 数値に変換し、その ZZ 数値から文字列に戻すにはどうすればよいでしょうか?

:

ZZ 多数を表すクラスです。
例: 18287348238476283658234881728316274273671623781254124517353


したがって、基本的には、たとえば「Hello World」を1文字ずつ実行し、文字のASCIIコードを取得して、「72 101 108 108 111 32 87 111 114 108 100」という数字を取得しようとしています。次に、この数値を文字列 "Hello World" に戻す必要があります

または、もっと良い方法があるかもしれません。

4

3 に答える 3

2

これを行う簡単な方法は次のとおりです。

std::string str("1234567890");
NTL::ZZ number(NTL::INIT_VAL, str.c_str());

ここで、次のことに注意してください。

std::cout << str << std::endl; // prints 1234567890
std::cout << number << std::endl; // prints 1234567890
于 2013-08-26T14:58:39.800 に答える
0

最も簡単な解決策は、chars をunsigned ints に、unsigned ints をZZ数値に変換できることを認識することです。次に、文字列を base-256 数値として扱います。たとえば、"abc" は 256*"ab" + "c"、または 65536 * "a" + 256 * "b" + "c"、((ZZ(unsigned('a')*256) + ZZ(unsigned('b'))*256) + ZZ(unsigned('c'))または

于 2010-01-22T13:36:41.380 に答える