`

[IOS]xcode生成公钥私钥

 
阅读更多

1.通过MAC终端可以生成:

参考:https://www.anquanke.com/post/id/151220?from=timeline

 

生成EC秘钥命令:openssl ecparam -genkey -name secp256r1 > test_ecc.key     (pem)

查看命令:openssl ec -text < test_ecc.key

生成公钥:openssl ec -in test_ecc.key -pubout -out test_ec_pubkey.pem

 

查看曲线参数:openssl ecparam -list_curves

 

2.XCODE:

 key algorithm:EC 对应:kSecAttrKeyTypeEC

(https://developer.apple.com/documentation/security/ksecattrkeytypeec?language=objc)

但是过期了,现在用kSecAttrKeyTypeECSECPrimeRandom

(https://developer.apple.com/documentation/security/ksecattrkeytypeecsecprimerandom?language=objc)

对应java的secp算法

 

常用的非对称加密算法包括:

(1)RSA:因由 RSA 公司发明而命名,是一个支持变长密钥的公开密钥算法,需要加密的文件块的长度也是可变的;公开密钥算法总是要依据一个数学上的难题。RSA基于大素数积难分解问题,给定两个数p、q 很容易相乘得到n,而对n进行因式分解却相对困难。

 

(2)ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。椭圆曲线因为用二元三次方程y^2= x^3+ ax + b来表示,类似椭圆周长计算方程而得名。公开秘钥算法要基于一个数学难题,椭圆曲线算法就是基于离散对数问题。有限域Fp上的椭圆曲线同样有加法,但已经不能给以几何意义的解释。

区块链中用到的签名算法SECP256K1

 

区块链中生成公钥时用到的算法是SECP256K1,是一种椭圆曲线的标准化表达方式,其中256表示该椭圆曲线是256位, K代表Koblitz curve,相对应的椭圆曲线的标准换表达还有,SECP192K1,SECP192R1,SECP224K1,SECP224R1,SECP256R1,SECP384R1,SECP521R1等。

 

IOS:

NSDictionary *parameters = @{
                                 (__bridge id)kSecAttrKeyType: (__bridge id)kSecAttrKeyTypeECSECPrimeRandom,
                                 (__bridge id)kSecAttrKeySizeInBits: @192,
                                 (__bridge id)kSecPrivateKeyAttrs: @{
                                         (__bridge id)kSecAttrIsPermanent: @YES,
                                         (__bridge id)kSecAttrApplicationTag: [@"my.key.tag" dataUsingEncoding:NSUTF8StringEncoding],
                                         },
                                 (__bridge id)kSecPublicKeyAttrs: @{
                                         (__bridge id)kSecAttrIsPermanent: @YES,
                                         (__bridge id)kSecAttrApplicationTag: [@"my.key.pubtag" dataUsingEncoding:NSUTF8StringEncoding],
                                         }
                                 };
    
    SecKeyRef publicKey, privateKey;
    OSStatus status = SecKeyGeneratePair((__bridge CFDictionaryRef)parameters, &publicKey, &privateKey);
    
    NSData * publicKeyBits = nil;
    NSData * privateKeyBits = nil;
    NSString *privateKeyBitsString = nil;
    if (status == errSecSuccess) {
        publicKeyBits = (__bridge NSData *)((__bridge SecKeyRef)(CFBridgingRelease(publicKey)));
        privateKeyBitsString = (__bridge NSString *)(privateKey);

        
        // Remove from Keychain again:
        (void)SecItemDelete((__bridge CFDictionaryRef) parameters);
    }

 不知道为什么openssl生成的public key和ios security framework生成的长度并不一样

分享到:
评论

相关推荐

    iOS RSA加密

    2. **导入密钥到iOS项目**:将生成的公钥和私钥文件添加到Xcode项目中,通常以二进制格式(PEM转DER)导入,因为iOS更倾向于处理DER格式的密钥。 3. **使用Security框架**:在iOS代码中,我们可以使用`...

    IOS开发证书

    当开发者创建证书请求文件(CSR)时,会生成一对公钥和私钥。公钥被包含在CSR文件中,并发送给Apple,而私钥则保留在开发者的计算机上。 **2. 公钥和私钥的作用是什么?** - **公钥**:用于加密数据,任何人都可以...

    IOS openssl 支持arm64 i386

    1. 生成RSA密钥对:使用OpenSSL的`genpkey`命令生成公钥和私钥。 2. 将密钥导入到iOS应用中:将公钥和私钥文件包含在项目资源中,或者从服务器动态获取。 3. 加密数据:使用OpenSSL库的API,如`RSA_public_encrypt()...

    ios-csr:在iOS中生成CSR(证书签名请求)

    在创建CSR时,你将使用私钥,私钥将保留在你的本地设备上,用于解密由公钥加密的数据。 3. PKI(Public Key Infrastructure,公钥基础设施): PKI是一套用于身份验证的机制,它利用公钥加密理论来管理和验证数字...

    免费IOS开发证书Flex

    5. PKCS12文件:用于存储公钥和私钥的加密文件,是证书的一部分,用于应用签名。 掌握这些知识点,开发者就能成功配置并使用免费的IOS开发证书,从而在Flex环境下开发和测试iOS应用。在实际操作中,还需要遵循Apple...

    iOS RSADemo

    首先,RSA的核心原理是:生成一对公钥和私钥,公钥可以公开,任何人都可以使用公钥对数据进行加密;而私钥必须保密,用于解密由公钥加密的数据。在iOS应用中,RSA常用于保护敏感信息,如用户的账号密码、支付信息等...

    ios证书p12及mobileprovision

    **P12证书**全称是Personal Information Exchange Syntax Standard,它是一种公钥基础设施(PKI)标准,用于存储用户的个人信息,包括公钥、私钥以及相关的证书。在iOS开发中,P12证书通常包含了Apple Developer或...

    ios证书--ios企业打包证书,有了他可以打包ipa

    `.p12` 文件是包含了公钥和私钥的个人身份信息,用于数字签名和加密。在本例中,`developer.p12` 就是这样一个证书文件。在使用前,开发者需要将其导入到Xcode或者Keychain Access工具中,以便在打包过程中进行签名...

    ios支付宝支付demo

    这些参数包括但不限于AppID、商户私钥、支付宝公钥等。确保正确替换这些值,以匹配你的支付宝商户账号信息。 3. **支付流程**: - 用户触发支付操作后,调用支付宝SDK提供的支付接口,传递订单信息(如商品详情、...

    RSA-Native-Encryption:仅使用64位,使用带有XCODE 5和IOS7的GMP生成RSA加密

    1. **密钥生成**:RSA算法需要一对公钥和私钥,生成过程包括选择两个大素数p和q,计算它们的乘积n=p*q,以及欧拉函数φ(n)=(p-1)*(q-1)。接着选择一个整数e,满足1φ(n)且gcd(e, φ(n))=1,最后找到d作为e的模φ(n)...

    关于RSA加解密

    iOS平台使用Apple的Xcode工具链,其中包括了用于处理证书和签名的工具,如keychain、codesign等。开发者通常需要创建并管理开发证书和发布证书,以便在模拟器上运行或在App Store上分发应用程序。 1. **证书的创建...

    iOS APP签名机制原理详解

    2. 苹果公司的公私钥对:苹果公司自己有一对公私钥对,私钥A在苹果后台,公钥A在每个iOS系统的手机中。 开发者需要将公钥M和一些开发者信息(CSR文件)发送给苹果后台,让苹果后台用私钥A对公钥M签名,得到一份包含...

    iOS支付宝最新demo

    在实际应用中,这些信息由支付宝提供,包括AppID、商户私钥、支付宝公钥等。这些参数用于验证交易的安全性和合法性。在Demo中,这些参数通常被硬编码在代码或配置文件中,但在实际产品中,建议存储在安全的地方,如...

    iOS 消息推送服务器(OS X工程源码)

    而.cer文件则是你的推送证书,它是从Apple Developer Portal中生成的,包含了与你的Apple ID关联的私钥和APNs服务的公钥,用于安全地与APNs进行通信。 接下来,你需要将.cer文件添加到工程中。在Xcode中,你可以将...

    taoerxue.p12.zip

    4. **打包成.ipa文件**:.ipa是iOS应用的二进制安装包格式,只能通过Apple的官方工具如Xcode或第三方工具如HBuilder来生成。这个文件包含了应用的代码、资源和元数据,是提交到App Store或通过其他方式分发给用户的...

    归档.zip profile文件 密码120

    它包含了公钥/私钥对,用于数字签名和验证iOS应用的身份。当你在Xcode或者苹果开发者中心生成一个证书时,你可以选择将其导出为.p12格式,便于在不同的机器或环境中导入并使用。密码“120”是为了保护这个.p12文件不...

    p12certcheck

    2. 使用Xcode或Apple Developer Portal生成开发或发布证书。 3. 将证书与私钥导出为P12文件。 4. 使用P12文件对IPA(iOS应用程序包)进行签名。 5. 安装签名后的IPA到设备上。 三、“p12certcheck”工具的作用 ...

    苹果虚拟机安装方法之四配置开发者证书

    CSR是一个包含了公钥和组织信息的数据文件,由开发者生成,然后提交给苹果的开发者中心,以申请一个开发者证书。生成CSR的步骤如下: 1. 打开“钥匙串访问”(Keychain Access)应用程序,它位于Mac的“应用程序”&gt;...

Global site tag (gtag.js) - Google Analytics