我正在寻找一种很好的可可方式将NSData对象序列化为十六进制字符串.我们的想法是将用于通知的deviceToken序列化,然后再将其发送到我的服务器.
我有以下实现,但我认为必须有一些更短更好的方法来实现它.
+ (NSString*) serializeDeviceToken:(NSData*) deviceToken
{
NSMutableString *str = [NSMutableString stringWithCapacity:64];
int length = [deviceToken length];
char *bytes = malloc(sizeof(char) * length);
[deviceToken getBytes:bytes length:length];
for (int i = 0; i < length; i++)
{
[str appendFormat:@"%02.2hhX", bytes[i]];
}
free(bytes);
return str;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发Iphone应用程序.我使用了Security/Security.h框架的SecKeyGeneratePair方法.我正在获取公钥和私钥作为SecKeyRef对象.我可以访问密钥或将其值打印到控制台吗?我可以从中获取NSString或NSData对象吗?当我使用NSLog将密钥打印到控制台时,我得到了.我们可以通过网络将这些关键对象传递给可能在java中的其他应用程序吗?我们可以加密iphone应用程序中的一些文本,将其发送到服务器,使用密钥发送解密服务器端的文本吗?
编辑添加 感谢Alex Reynolds的快速回复.在RSA加密的情况下,首先我必须生成一个SecKeyRef对象形式的密钥对.然后我们将该引用传递给SecKeyEncrypt和SecKeyDecrypt方法.当我在本地加密和解密时它工作正常但如果我尝试将密钥和加密数据发送到服务器并在服务器(java实现)端解密,我无法将SecKeyRef对象作为键值传递给服务器.在java中,我们必须以字符串或字节数组格式获取字符串以传递给加密方法.我们可以访问存储在对象SecKeyRef(NSCFType对象)中的数据吗?这是一个struct __SecKey.
我已经阅读了使用加密的应用程序的Apple出口限制,我感到困惑.
仅用于加密我的gameave数据是否值得进行所有CCATS/SNAP-R程序?
使用加密会阻止我的应用在某些地区销售?
我的应用程序可以因加密而被拒绝吗?
谢谢!