【发布时间】:2011-09-19 16:25:59
【问题描述】:
我将 openssl 私钥 EVP_PKEY 存储为 nsdata。为此,我使用下面的代码序列化为字节流
unsigned char *buf, *p;
int len;
len = i2d_PrivateKey(pkey, NULL);
buf = OPENSSL_malloc(len);
p = buf;
i2d_PrivateKey(pkey, &p);
其中 pkey 是 EVP_PKEY 类型。 然后我使用下面给出的行将缓冲区“p”中的字节存储为 NSData
NSData *keydata = [NSData dataWithBytes:P length:len];
现在我正在使用下面给出的代码将它转换为 NSString,但是当我将它打印到控制台时,它会给出一些其他字符。
NSString *content =[ NSString stringWithCString:[keydata bytes] encoding:NSUTF8StringEncoding];
有人可以帮忙吗?
基本上我想存储 EVP_PKEY 进入sqlite数据库
我在正确的轨道上吗? 谢谢。
【问题讨论】:
-
“其他一些角色”是什么意思?是在末尾打印不应该存在的额外字符,还是只是打印与您预期完全不同的字符?
-
它与现在完全不同
-
您确定数据实际上是 UTF-8 编码的吗?我对 i2d_PrivateKey 不熟悉,但您的结果表明您没有使用正确的字符串编码。
-
@TOm:谢谢。它是 ASCII 编码。现在它工作正常
-
不,您在这里没有走在正确的轨道上,所有答案似乎都不正确。如果要将
NSData中的数据转换为NSString,则应使用base64编码。
标签: iphone ios sqlite openssl nsdata