我正在寻找在RSA
中生成swift
公钥/私钥对的最简单方法我已经看到很多关于iOS
不支持{{}}的讨论{1}}。
我只需要生成密钥对并将公钥发送到我的服务器,服务器将OpenSSL
一些带有密钥的数据并将其重新发送给我的私钥encrypt
。这是一次性交易,之后我不再需要密钥了。
对此最简单,最轻便的解决方案是什么?
答案 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