objective-c - Xcode需要Openssl RSA解密功能

标签 objective-c xcode encryption openssl rsa

我正在从 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 的指南?

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

提前谢谢你。

最佳答案

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

如果运气好的话,您可以使用 apple transforms 做一些事情并使用该程序。

如果不是——或者如果出于某种原因你真的想使用 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 的值初始化起来有点复杂,因为这是您设置 key 的地方,而不是其他地方。检查上面的 rsa.c 文件以获取各种填充方式的示例 - 它通常归结为如下内容:

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

其中load_key是借鉴openssl的app examples

关于objective-c - Xcode需要Openssl RSA解密功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476833/

相关文章:

java - 我使用 AES 算法加密 32 字节长度的数据,结果(密文)是 64 字节长度,这有效吗?

javascript - PHP 加密 - JS 解密。安全问题

objective-c - Mojave /macOS 10.14.0 : [AVPlayerItem duration] is always indefinite

objective-c - 可以使用通配符吗?

objective-c - 按下 uitextfield 时键盘不出现

java - DES解密: Given final block not properly padded

ios - Objective-c 中的常量类

xcode - 在 Swift 上向侧边栏菜单添加功能

ios - 所有动画执行缓慢

ios - xcodebuild - 设置构建目录不会生成 dSYM