Pregunta

Estoy usando el NTL biblioteca ElGamal para implementar la encriptación / desencriptación algoritmo. Tengo hasta el punto de que está funcionando pero el algoritmo quiere que el mensaje se convierte en números enteros para que pueda ser encriptada.
Así que si de entrada i un número como 1234 todo funciona bien, pero ¿cómo voy a ser capaz de convertir una cadena de C ++ (std :: string) a un número ZZ y luego de vuelta de ese número ZZ a una cadena?

LE

ZZ es una clase que representan un gran número.
Ej: 18287348238476283658234881728316274273671623781254124517353

Así que, básicamente estoy en busca de tomar "Hello World" por ejemplo y ejecutarlo charla por carbón y obtener el código ASCII de los caracteres de manera voy a conseguir un número: "101 108 108 72 111 32 87 111 114 108 100"
Y entonces necesito para convertir este número de devolución de cadena "Hola Mundo"

O tal vez hay una mejor manera.

¿Fue útil?

Solución

Esta es una manera fácil de hacerlo:

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

Ahora aviso de que:

std::cout << str << std::endl; // prints 1234567890
std::cout << number << std::endl; // prints 1234567890

Otros consejos

Esta es una respuesta de la web del autor NTL:

  

Además de las conversiones mencionadas, hay una conversión genérico   de una C-strings (es decir, const char *) para cualquier tipo T, que es   implementado utilizando plantillas usando el operador de entrada >> para el tipo T.   Así, por ejemplo, puede escribir

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

Fuente: http://www.shoup.net/ntl/doc/conversions .txt

Yo probé y funcionó a la perfección.

Con mucho, la solución más fácil es darse cuenta de que se puede convertir a chars unsigned ints y unsigned ints a los números ZZ. Luego tratar la cadena como un número de base-256. Por ejemplo, "abc" sería 256 * + "c" 65536 * "a" + 256 * "b" "ab" + "c", o, o ((ZZ(unsigned('a')*256) + ZZ(unsigned('b'))*256) + ZZ(unsigned('c')),

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top