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

时间:2015-08-01 05:24:41

标签: swift rsa

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

2 个答案:

答案 0 :(得分:4)

您可以使用OS X的内置OpenSSL来生成和加密OS X和Swift的组合。

OpenSSL命令:

  1. openssl genrsa -out rsaPrivateKey.pem 4096(2048也很好 - 经销商选择)
  2. openssl rsa -in rsaPrivateKey.pem -out rsaPrivateKey.key
  3. openssl req -new -key rsaPrivateKey.key -out rsaCertReq.crt(this 步骤需要基本信息,iOS需要密码,所以设置一个 当它问)
  4. openssl x509 -req -days 10000-in rsaCertReq.crt -signkey rsaPrivateKey.key -out rsaCert.crt
  5. openssl x509 -outform der -in rsaCert.crt -out publicKey.der
  6. openssl pkcs12 -export -out privateKey.pfx -inkey rsaPrivateKey.key -in rsaCert.crt
  7. 最后,从iOS角度来看,重要文件是publicKey.der和privateKey.pfx。您将使用publicKey.der加密数据,并使用privateKey.pfx进行解密。

    iOS加密

    在iOS中,除了提供编码和解码密钥的支持功能外,Certificate,Key和Trust Services API还使用以下SecKey功能提供基本的加密,解密,签名和数据块验证:

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

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

    SecKeyRawSign - 使用指定的密钥指定数据块。

    SecKeyRawVerify - 针对数据块和指定密钥验证签名。

    Apple Docs
    Encrypting and Hashing Data

    您可以在Apple文档Certificate, Key, and Trust Services Tasks for iOS

    中找到有关如何使用这些功能的示例
    import UIKit
    import CoreFoundation
    

    对Security.h使用桥接头文件

    #import <Security/Security.h>
    

答案 1 :(得分:1)

好的,我为你做了一些研究,这是我的想法(基于我在this related question中看到的答案)。

There is an open source GitHub project in Swift called Heimdall这是Apple安全框架的一个很好的包装器。 GitHub页面上的自述文件表示&#34; Swift 1.2&#34;但Xcode 7&amp; Swift 2.0现在将在任何一天完成,希望很快就会更新。

如果您想跳过使用开源软件,那么您需要直接调用Apple的安全框架。查找包含以下调用的示例代码:SecKeyEncryptSecKeyDecrypt

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