使用现有密钥对加密/解密文本

时间:2014-04-14 18:24:00

标签: ios objective-c encryption

这对我来说非常困惑。我有一个使用PHP生成公钥/私钥对的过程。这是我这样做的代码:

$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 4096,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);

// Create the private and public key
$res = openssl_pkey_new($config);

以下是生成输出的示例:

  

-----开始公钥----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1ufdaaaDQuWPuBlw8Vce   WeGwdL3KhrC / YzgWi8oP72bQ2ZzgxzNcXHdmWGfXax4EBlWwIPBbTSNboi6urieb   bPNIS / EI / AjGBKO / yJ2iDkfnxmy6xBxwpunqeq2TjEDDNXb2Y0g896gIjfwN8FZk   olLspoFks5ipAxdYLNlWR5stgxWeEXC2gpAPLaP00d3Xg / Qhsm2fUBvlJHQReiS1   Mwyajg0EV72U3YpP0OK19z0YLBFRhaUbnE + Mx6TSnB9XqaWe4GKsBNSO06Lz4N9j   k7Sg16DXpueKHo8pDZwuN2qbIG3fGc3ibNMR2U6lux218BGTIgGdvoAar1E3cOF1   VmLI3aDS / EVejzDs3gkG1rxcrbCFajnWe5Yl1J + nXefFBedr2FLx6ChSPZFV1x3P   DUmR1hb / NDsLHwnj7qQqqhtgfPdFql4EjGFGUvYgid1K0u / 8B6Vqk0k9JKU5nrN5   d1e3H7qJm / kbBoHNsI / 0gbuUyRKTIpxU5b9ex51WpA80FBMC / Ao6DeWLNu59W134   YGu5kfI1qFI0w5xUsA3IU91Ak2tHYEzzjnIz0rVMoJezLbtxcv26e5gMDjuQN // d   UM / Qe6Akck382yYgdrivgUjxB3A / IWP5IhKaLZazAWxgrc6EPvcbQFgzU / T5EbHI   dt279SgTgQ + OlotfvnKNmL0CAwEAAQ == ----- END PUBLIC KEY -----

私钥:

  

-----开始RSA私钥----- MIIJKQIBAAKCAgEA1ufdaaaQuWPuBlw8VceWeGwdL3KhrC / YzgWi8oP72bQ2Zzg   xzNcXHdmWGfXax4EBlWwIPBbTSNboi6uriebbPNIS / EI / AjGBKO / yJ2iDkfnxmy6   xBxwpunqeq2TjEDDNXb2Y0g896gIjfwN8FZkolLspoFks5ipAxdYLNlWR5stgxWe   EXC2gpAPLaP00d3Xg / Qhsm2fUBvlJHQReiS1Mwyajg0EV72U3YpP0OK19z0YLBFR   haUbnE + Mx6TSnB9XqaWe4GKsBNSO06Lz4N9jk7Sg16DXpueKHo8pDZwuN2qbIG3f   Gc3ibNMR2U6lux218BGTIgGdvoAar1E3cOF1VmLI3aDS / EVejzDs3gkG1rxcrbCF   ajnWe5Yl1J + nXefFBedr2FLx6ChSPZFV1x3PDUmR1hb / NDsLHwnj7qQqqhtgfPdF   ql4EjGFGUvYgid1K0u / 8B6Vqk0k9JKU5nrN5d1e3H7qJm / kbBoHNsI / 0gbuUyRKT   IpxU5b9ex51WpA80FBMC / Ao6DeWLNu59W134YGu5kfI1qFI0w5xUsA3IU91Ak2tH   YEzzjnIz0rVMoJezLbtxcv26e5gMDjuQN //达姆/ Qe6Akck382yYgdrivgUjxB3A /   IWP5IhKaLZazAWxgrc6EPvcbQFgzU / T5EbHIdt279SgTgQ + OlotfvnKNmL0CAwEA   AQKCAgBzYwMq2tDXdlJ4UpClxFTzhY4s4EqBjxzztQXGALQVomq4rNazngwVSbaV   + Qtc5Dzc + d0bknIzNKzao53 + vB1jnixPPaMxF7TagOFUYe7FJC56B58v9OU3eZkA TXpPb + ZgKoOYQw0ZHAub0J3bUUevMD8IF6luFKWKl1osmnUM9XC2VUENtCsKZzb /   Fm040ZgJrWb6WomThaa + R + NCZbs0sau6YZrXUV9ApCa + zTtOiGsWHiZbT49Hmh7I   guLiGKIE4HwxlkkuPsKBN5kiQE9C21UQ8bdYUjGCvvMX76eQ8ZhhDR0gyb6tF5cZ   ynSJxyYMxCLvu1ZrFnU9dKoD3coVn0lBeWZH17zVkGWIV6XmQ4aSM2wB2Qobvv0T   U8M / R1dqObCxCycJEB0LHhB4bAC98g5W2B8hL46ENn / YnUqxzLzWucVfwI / e59N2   kJm5FxHrE4empTT / Zfyn + / A36vDEHafb4yHDX2gQTHW7US47DaXMbkKME37oBqAz   oy2p1XNMAWq + YG / XznloHBZ5HQ3nThG4kD93AnXNCKVUYc0gy8ROqEwoFYWAGs9a   ircv4SwCVDm2LM1uYMB95L39yg5i038ndW0sfDn8FBw4YIik // + KezHL / 1Yr0fRF   0gPFYcLtXFLYqbsPqg1wq7VOCtZ1 + NhgzsAgWDULfFJhViFzAQKCAQEA / YMAJgqs   QLzNMAwpvCXqU1JShf9B3qc0J8LHO1mdy1qCCh873aFVJNppgX7j6PvXkuOotRWE   / EM + 0dyqJxrd8B1ifEA3MbON3WGEYZR5BIgBvxW9vFlbKzKhOwjWBX9zIVok2WMg   TPoMPAxs0x0fJGKzBkVvg5pjolyLdhIr1j79nn8z7EIgoJ2ZhQiOZPBmGR / MIt1Y   dBroWa / 8cSEy4SLqfifsoqx8AaN9lQwJXJck2 / bZ2Ft47jtXOxhL2NfqY3eMvRlt   nPwC1hTTbGw1zFvqGTEK76W9zdD + nwkrC38lLDH01dBcDeRbJ8NbwfSVbH4d1Y + Z   wbG3ygUozOisLQKCAQEA2QPb44wYCuI06eUI8i8h8gqEpj6lzWBss4259CFg7rVK   9tuQS5VlazJ8l11 + gjIX7E + mtwwo1oSzyf9qsIvNgwLS2CwdIxCn + Ldka4NLTfUP   BQ3KtFbS8O8z0dijdzulTAOv + zZw9GtcisvjVaN3sIlJQ91LkfDfQQE6pQgi4E7a   ajjf6mloDtInbSId0X2DcirokjQ0CH65QLScvrgL8DwU6kAhGAjQQxy79AkbDhdh   1R5jq2IhUdoJdvBSwvieT + 46XsZxX3He0ObZ086eVQBcuxoGYesSQvsfQ / RIH1f7   AXrKbnDbsookpfA7 + WXuivMZICn9EbOFJNYEqboo0QKCAQEA4bX3NeeewezXi4Xo   YRM / TfwnuWIxVXntN9F17WO22E13Jmf0tzljQ3KrKT6 + 0LsZjpDfrorAYpeOK ++一个   F0MWgyjGfPX3rmq9TnP6l57HuL8XPviue7nbMDTd1F / jnfWBnhpSYLKfGaovpm8x   nS16grzVxCmiRbv6JZ7cFH3NRe3DhZCfvCSMRDTNcOLTVQ + s94WWDRyiGo2yfdfw   NRD / 6e9adIQ7bgLATf0wXLngw + 1WRfocr0OSAhoXamgRb7md2H2icuLm8zR1mgHk   083sgEz9uvwtTn105oDDkvlot822XQkFgjEHJN9CQb7wPVn0iCopifFW5lvC1T2O   vBIU6QKCAQEAziF2OZsWMzBOJmSgrLnMOoV3Hhmfj4apeZuDJ7qUweh9 / iDr3H9Z   SAs6gOQTiENgqdu2dWQdXjXKOHJdurfwSyLhduff / TCS / BHmVqDtZG0DCT / ibI2T   67qptAdcraKADcXq4GkDvYZE7qlflDajN5IPf2CxqTvsM2ihdaRWzEzZ9c90EMpy   RrGjNWwUeqoHsufC5Sykx / TmrelggV98J4JKM38acCPe / gBLHy + O / UGEcdRdw6qA   D6lVGB6J3hwc87tKwj8n7QrSJAdCnIdDqWWgry + 3JEcOn4S8W +水质指标+ sDxpIFugWF   CP9idCPOM8R4Yo8qLHz1nlyweR64ayciIQKCAQAuWLYvCBWJ5RjsG + m6RSisf / QS   uoPN + D1midgGrBBUC6NSSPusr8ACBWgPng4wJiR9uRgpN1FMpo / SKKyiIwFieWKu   米/ kKPWkfZjVpwA84kSY7yx4LtQlRIDdF2 + nTtLhYr4NfJ3i3yFMOPASkv2hx3X4D   2tlTmrR + Ug9fhS6O2YpjQVJDBLm21R98oT1BWKI7 + X2hx6c8AQ25t5 + 9M6Kf6vtv   WHvk3ws6P9mHnHeGPufA + iP782mrNM5wnrj6qt1aMldV1g4c + oQW1kr29o9A0N37   qZnIn3kCiMldMyQlk0ITJ34Tt60dvpElF1Jh0JurfQI9IAGOCCP7Ciz4rZX5 ----- END   RSA私钥-----

所以我将这两个文件保存到我存储密钥的服务器上。当我的应用程序运行时,它会以这种格式以文本格式接收相应的公钥/私钥。这是我的问题:如何根据函数中的算法(SHA512,4096位)使用这些现有密钥来加密和解密NSString?根据我的理解,我必须先使用密钥才能使用iOS - strip header,转换为base64,例如?

简而言之,我希望创建两个函数。一个可以解密,一个可以解密 - 两者都应该采用上面文本格式的证书(或转换为别的东西)以及要加密的文本并返回加密/解密版本。

2 个答案:

答案 0 :(得分:1)

您没有使用SHA512进行加密/解密,如果您要创建与此密钥对绑定的证书或证书请求,则使用该值。

以下是您使用的参数的细分:

"digest_alg" => "sha512"

用于证书中的摘要。

"private_key_bits" => 4096,
"private_key_type" => OPENSSL_KEYTYPE_RSA,

这意味着您生成了一个RSA-4096密钥对。因此,请确保使用RSA-4096加密/解密。

答案 1 :(得分:1)

虽然这个图书馆无法满足我的原始需求,但它的安全性已足以满足我的要求。它还可以轻松地在多种语言中添加加密/解密功能。​​

https://github.com/RNCryptor/RNCryptor