这对我来说非常困惑。我有一个使用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,例如?
简而言之,我希望创建两个函数。一个可以解密,一个可以解密 - 两者都应该采用上面文本格式的证书(或转换为别的东西)以及要加密的文本并返回加密/解密版本。
答案 0 :(得分:1)
您没有使用SHA512进行加密/解密,如果您要创建与此密钥对绑定的证书或证书请求,则使用该值。
以下是您使用的参数的细分:
"digest_alg" => "sha512"
用于证书中的摘要。
"private_key_bits" => 4096,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
这意味着您生成了一个RSA-4096密钥对。因此,请确保使用RSA-4096加密/解密。
答案 1 :(得分:1)
虽然这个图书馆无法满足我的原始需求,但它的安全性已足以满足我的要求。它还可以轻松地在多种语言中添加加密/解密功能。