3

我正在从 xcode 中的应用程序读取加密字符串,我必须编写一个使用 RSA 解密来解码和显示消息的函数。

我完全不知道从哪里开始。

我在 xcode 中编译了 Openssl,我正在使用 openssl/rsa.h 文件。

我正在尝试使用该功能:

RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding);

但是后来我在 Openssl 主站点上的某个地方读到该函数只返回一个数字而不是实际的字符串。我也不知道要通过什么参数。

我发现的唯一参考是 openssl/rsa.h 文件并查看它包含的函数。

在过去的几个小时里,我尝试做一些研究,但我没有找到任何答案。

我想知道是否有一个简单的函数可以传递我的加密字符串和我的私钥(使用文件或硬编码)并且它可以返回解密的字符串?

如果没有,是否有关于如何在 Objective C 编程中使用 Openssl 的指南?

如果您需要有关此问题的更多信息,请告诉我。

先感谢您。

4

1 回答 1

1

您可能想查看 Apple 在其Security Overview中使用安全转换(这避免了 openssl)的示例。

运气好的话,你可以用苹果变换做一些事情,然后用那个程序。

如果不是 - 或者由于某种原因你真的想使用 openssl;然后 openssl 源包含示例文件,该文件openssl-0.9.8t/apps/rsa.c几乎允许选择性剪切和粘贴以使工作正常。

man RSA_private_decrypt从命令行执行将显示手册页(或从 Xcode 到手册页)。或查看http://www.openssl.org/docs/crypto/RSA_public_encrypt.html

上述示例用法:

unsigned char in[] = { 1, 2, ... byte array to decrypt };
// size of that in byte array
int inlen = sizeof(in);

// output buffer size depends on the key type.
char * out = malloc(RSA_size(rsa)); 

int e = RSA_private_decrypt(inlen, in, out, rsa, RSA_PKCS1_PADDING);

其中 padding 是手册页中的值之一。

rsa 的值初始化起来有点复杂,因为这是您设置密钥的地方,而不是什么。检查上面的 rsa.c 文件以获取各种填充方法的示例 - 它通常归结为以下内容:

EVP_PKEY *pkey = load_key( ... , password,... );
rsa = EVP_PKEY_get1_RSA(pkey);

whereload_key是从 openssl 的应用示例中借来的。

于 2012-07-13T20:22:47.517 回答