生成RSA公钥/私钥对

时间:2015-10-08 17:06:25

标签: swift swift2

我正在寻找在RSA中生成swift公钥/私钥对的最简单方法我已经看到很多关于iOS不支持{{}}的讨论{1}}。

我只需要生成密钥对并将公钥发送到我的服务器,服务器将OpenSSL一些带有密钥的数据并将其重新发送给我的私钥encrypt。这是一次性交易,之后我不再需要密钥了。

对此最简单,最轻便的解决方案是什么?

2 个答案:

答案 0 :(得分:5)

此Github回购 - Heimdall ,可以帮助您生成密钥和加密数据。

示例用法:

if let heimdall = Heimdall(tagPrefix: "com.example") {
    let testString = "This is a test string"
// Encryption/Decryption
if let encryptedString = heimdall.encrypt(testString) {
    println(encryptedString) // "cQzaQCQLhAWqkDyPoHnPrpsVh..."

    if let decryptedString = heimdall.decrypt(encryptedString) {
        println(decryptedString) // "This is a test string"
    }
}

// Signatures/Verification
if let signature = heimdall.sign(testString) {
    println(signature) // "fMVOFj6SQ7h+cZTEXZxkpgaDsMrki..."
    var verified = heimdall.verify(testString, signatureBase64: signature)
    println(verified) // True

    // If someone meddles with the message and the signature becomes invalid
    verified = heimdall.verify(testString + "injected false message",
                                signatureBase64: signature)
    println(verified) // False
}

使用自己的公钥加密数据:

swift-rsautils实用程序的 btnguyen2k 应该可以帮助您使用自己的公钥加密数据。它非常简单易用。

如何使用:

首先将RSAUtils.swift文件拖放到项目中。

就是这样!

加密基本字符串:

let PUBLIC_KEY = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJh+/sdLdlVVcM5V5/j/RbwM8SL++Sc3dMqMK1nP73XYKhvO63bxPkWwaY0kwcUU40+QducwjueVOzcPFvHf+fECAwEAAQ=="

let sampleText:String = "WHATS UP"

let encrypted:NSData? = RSAUtils.encryptWithRSAPublicKey(sampleText.dataUsingEncoding(NSUTF8StringEncoding)!, pubkeyBase64: PUBLIC_KEY, keychainTag: "yourdomain.com")

let encryptedDataText = encrypted!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions())

print(encryptedDataText)

打印:

ML5S87dfDB6l1uHFcACm2IdkGHpDGPUaYoSNTO+83qcWYxTEddFeKhETIcqF5n67nRDL0lKi5XV9uEI7hGTyKA==

答案 1 :(得分:4)

这是使用(<any> firebase.auth.GoogleAuthProvider).credential 在Swift中生成RSA密钥对的最简单方法:

SecKeyGeneratePair