C++ 将Symbian描述符形式的大整数转换为无符号字符*

C++ 将Symbian描述符形式的大整数转换为无符号字符*,c++,c,symbian,rsa,C++,C,Symbian,Rsa,我们正在尝试使用开放的C/C++库RSA.h和“RSA_public_encrypt”方法在Symbian中实现RSA加密: buffSize=RSA\u public\u encryptmaxSize,无符号字符*明文密钥,无符号字符*密码密钥,RSA,RSA\u无填充 我们用自己的指数和模创建了一个公钥,并将其放入“rsa”对象中。 我们要加密的纯文本是一个非常大的整数,以字符串形式接收,作为Symbian描述符 但是,纯文本应作为“未签名字符*”提供给加密方法。 如何将描述符纯文本转换为“

我们正在尝试使用开放的C/C++库RSA.h和“RSA_public_encrypt”方法在Symbian中实现RSA加密:

buffSize=RSA\u public\u encryptmaxSize,无符号字符*明文密钥,无符号字符*密码密钥,RSA,RSA\u无填充

我们用自己的指数和模创建了一个公钥,并将其放入“rsa”对象中。 我们要加密的纯文本是一个非常大的整数,以字符串形式接收,作为Symbian描述符

但是,纯文本应作为“未签名字符*”提供给加密方法。 如何将描述符纯文本转换为“unsigned char*”,以便加密方法将纯文本解释为非常大的整数。 或者对于那些不熟悉Symbian描述符的人:如何将普通文本从常规字符串char*转换为加密解释为非常大的整数的值

我们已经尝试了几种方式来提供纯文本,但是加密文本不是它应该是的 我们将此结果与其他平台上的结果进行了比较,并验证了其正确性


非常感谢您提供的任何帮助。

您必须分配malloc明文和cipherkey变量,并使用lstrcpy或类似工具将未加密的明文字符串复制到cipherkey,以使此函数正常工作

plainkey = malloc(PLAINKEY_SIZE);
cipherkey = malloc(CIPHERKEY_SIZE);
lstrcpy(plainkey, "12345...");
buffSize = RSA_public_encrypt(maxSize, plainkey, cipherkey, rsa, RSA_NO_PADDING);
也可以使用无符号字符数组:

unsigned char plainkey[PLAINKEY_SIZE] = "12345...";
unsigned char plainkey[CIPHERKEY_SIZE];
buffSize = RSA_public_encrypt(maxSize, plainkey, cipherkey, rsa, RSA_NO_PADDING);
RSA_public_encrypt的第一个参数是flen,第二个参数是from,即它将从from对flen进行加密

假设您有一个要加密的TDesC8描述符源,请按如下方式调用该函数:

 RSA_public_encrypt(source.Length(), source.Ptr(), ... 

无符号字符*是纯文本。请发布一个如何调用函数的示例。谢谢您的回答!我尝试了你的建议,但得到了和以前一样的错误结果。因此,问题应该在别处。如果有人知道使用openSSL的RSA加密,请检查我的其他线程,也许你可以在那里发现一个错误。无论如何谢谢你!