質問

私が使っているの NTL図書館 実施ElGamal暗号化/復号アルゴリズムです。そうだったんではよいが、アルゴリズムのメッセージの整数型に変換で暗号化することができます。
その場合を入力し番号のような1234べての動作がどのように行ってきに変換するにはC++の文字列std::string)をZZれるZZ数値を文字列?

LE:

ZZこのクラスを表します。
Ex:18287348238476283658234881728316274273671623781254124517353

のではないでしょうかを探している"こんにちは世界"例えば、実行しまcharによるcharのasciiコードの文字を含んだ数値を取得します:"72 101 108 108 111 32 87 111 114 108 100"
それかに変換する必要があるが、この数に戻る文字列"こんにちはの世界"

もあります。

役に立ちましたか?

解決

ここでそれを行うための簡単な方法があります:

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

他のヒント

ここではNTLの作者のWebサイトからの答えは次のとおりです。

  

は記載されている変換に加えて、汎用的な変換があります   任意のタイプTへの C-文字列の(すなわち、CONSTのchar *)から   型Tの入力演算子を使用して、テンプレートを使用して実装>>   したがって、たとえば、あなたが書くことができます。

    ZZ x = conv<ZZ>("99999999999999999999999");

ソース: http://www.shoup.net/ntl/doc/conversions .TXTする

私はそれを試みたが、それは完全に働いています。

では、これまで最も簡単な解決策は、あなたがchar番号にunsigned intsにunsigned ints、およびZZsを変換できることを実現することです。そして、ベース-256数として文字列を扱います。例えば、 "ABC" 256 * "AB" + "C"、または65536 * "" + 256 * "B" + "C"、またはあろう((ZZ(unsigned('a')*256) + ZZ(unsigned('b'))*256) + ZZ(unsigned('c'))

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top