Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将公钥导出到解压缩(x,y)表示形式以0x04开始,长度为65字节_Ios_Objective C_Elliptic Curve - Fatal编程技术网

Ios 将公钥导出到解压缩(x,y)表示形式以0x04开始,长度为65字节

Ios 将公钥导出到解压缩(x,y)表示形式以0x04开始,长度为65字节,ios,objective-c,elliptic-curve,Ios,Objective C,Elliptic Curve,我有以下生成私钥的示例代码(链接到gist): 生成私钥后,我通过调用SecKeyCopyPublicKey((SecKeyRef)privateKey) 我得到的值低于显示公钥的(x,y) <SecKeyRef curve type: kSecECCurveSecp256r1, algorithm id: 3, key type: ECPublicKey, version: 4, block size: 256 bits, y: 1778DB79819A67BC9211E003557C

我有以下生成私钥的示例代码(链接到gist):

生成私钥后,我通过调用
SecKeyCopyPublicKey((SecKeyRef)privateKey)

我得到的值低于显示公钥的(x,y)

<SecKeyRef curve type: kSecECCurveSecp256r1, algorithm id: 3, key type: ECPublicKey, version: 4, block size: 256 bits, y: 1778DB79819A67BC9211E003557CB55EA0C7A19154B1C0828B30F30AD208ABCD, x: 7A1C65A955F46B9937A12E19139DE25C3F19368A3C2DD7360791E42382C98716, addr: 0x1003019f0>
+ (NSData *) publicKeyBits


现在,我想将这个(x,y)传输到
0x04 | x-32bytes | y-32bytes
,这是65字节的二进制数据,因此我可以将这个二进制表示公钥的数据输出到服务器。如何实现这一点?

使用CoreFoundation的CFDictionaryGetValue方法

const void*CFDictionaryGetValue(CFDictionaryRef theDict,const void*键)

下面的函数将提供65字节的未压缩公钥

<SecKeyRef curve type: kSecECCurveSecp256r1, algorithm id: 3, key type: ECPublicKey, version: 4, block size: 256 bits, y: 1778DB79819A67BC9211E003557CB55EA0C7A19154B1C0828B30F30AD208ABCD, x: 7A1C65A955F46B9937A12E19139DE25C3F19368A3C2DD7360791E42382C98716, addr: 0x1003019f0>
+ (NSData *) publicKeyBits
{

}

  • kPublicKeyName可以是任何常量字符串,作为公钥的标记关联

例如-
#定义kPublicKeyName@“com.traile.ECKey.public”

使用CoreFoundation的CFDictionaryGetValue方法

const void*CFDictionaryGetValue(CFDictionaryRef theDict,const void*键)

下面的函数将提供65字节的未压缩公钥

<SecKeyRef curve type: kSecECCurveSecp256r1, algorithm id: 3, key type: ECPublicKey, version: 4, block size: 256 bits, y: 1778DB79819A67BC9211E003557CB55EA0C7A19154B1C0828B30F30AD208ABCD, x: 7A1C65A955F46B9937A12E19139DE25C3F19368A3C2DD7360791E42382C98716, addr: 0x1003019f0>
+ (NSData *) publicKeyBits
{

}

  • kPublicKeyName可以是任何常量字符串,作为公钥的标记关联

例如-
#定义kPublicKeyName@“com.traile.ECKey.public”

公钥上的SecKeyCopyExternalRepresentation()是否不起作用?如果是,则返回未压缩格式的值。SecKeyCopyExternalRepresentation()和SecKeyCopyPublicKey((SecKeyRef)privateKey)之间有什么区别?公钥上的SecKeyCopyExternalRepresentation()是否不起作用?如果是,则返回未压缩格式的值。SecKeyCopyExternalRepresentation()和SecKeyCopyPublicKey((SecKeyRef)privateKey)之间有什么区别?