如何加载密钥并使用RSA Swift加密

如何加载密钥并使用RSA Swift加密,swift,rsa,Swift,Rsa,您如何从文件中加载公钥或私钥,然后在不使用库或API的情况下用它在Swift中加密或解密数据?您可以使用OS X内置的OpenSSL生成和加密,或者使用OS X和Swift的组合 OpenSSL命令: openssl genrsa-out rsaPrivateKey.pem 4096(2048也可以) –经销商选择) openssl rsa-输入rsaPrivateKey.pem-输出rsaPrivateKey.key openssl req-new-key rsaPrivateKey.key-

您如何从文件中加载公钥或私钥,然后在不使用库或API的情况下用它在Swift中加密或解密数据?

您可以使用OS X内置的OpenSSL生成和加密,或者使用OS X和Swift的组合

OpenSSL命令:

  • openssl genrsa-out rsaPrivateKey.pem 4096(2048也可以) –经销商选择)
  • openssl rsa-输入rsaPrivateKey.pem-输出rsaPrivateKey.key
  • openssl req-new-key rsaPrivateKey.key-out rsaCertReq.crt(此 步骤需要基本信息,iOS需要密码,所以设置一个 当它询问时)
  • openssl x509-请求-天数10000-在rsaCertReq.crt中-签名密钥 rsaPrivateKey.key-out rsaCert.crt
  • openssl x509-outform der-in-rsaCert.crt-out publicKey.der
  • openssl pkcs12-export-out privateKey.pfx-inkey rsaPrivateKey.key -在rsaCert.crt中
  • 最后,从iOS的角度来看,重要的文件是publicKey.der和privateKey.pfx。您将使用publicKey.der加密数据,使用privateKey.pfx解密数据


    在iOS中加密

    在iOS中,除了提供编码和解码密钥的支持功能外,证书、密钥和信任服务API还使用以下SecKey函数提供数据块的基本加密、解密、签名和验证:

    SecKeyEncrypt-使用指定密钥加密数据块

    SecKeyDecrypt-使用指定密钥解密数据块

    SecKeyRawSign-使用指定的键对数据块进行签名

    SecKeyRawVerify-根据数据块和指定密钥验证签名

    苹果文档

    您可以在Apple文档中找到如何使用这些函数的示例

    为安全性使用桥接头文件。h

    #import <Security/Security.h>
    
    #导入
    
    好的,我为您做了一些研究,以下是我的想法(基于我在中看到的答案)

    这是苹果安全框架的一个很好的包装。GitHub页面上的自述文件上写着“Swift 1.2”,但Xcode 7和Swift 2.0随时都会定稿,希望很快就能更新

    如果你不想使用开源软件,那么你需要直接调用苹果的安全框架。查找包含以下调用的示例代码: 和


    这两个调用(以及SecKey.h中的所有调用)似乎都是C函数,但我链接到的苹果文档似乎表明可能有Swift API可用。

    …如果不需要命令行,也可以从Swift调用libCryptosolution@tymac那么,如何在Swift中加密数据?这是用于iOS还是OSX?还有,为什么要限制没有库或API?如果你想加密,你必须使用一些库或API。@MichaelDautermann。为什么?为什么?我不确定你的目标是什么。我正要提出建议,但后来我注意到你的“不使用库或API”评论,所以我觉得我的手被束缚在给你一个答案上。API无处不在,但OP不想使用API/框架,Heimdall是一个API。它可以使用iOS/osx密钥链创建RSA密钥对来存储密钥,因此密钥是以安全的方式存储的,但它也是一个API。CkoRsa是另一个API。@tymac在OP中和他谈过。我觉得没问题,而且SecKeyEncrypt和SecKeyDecrypt函数很好。
    #import <Security/Security.h>