我们的 iOS 开发人员使用以下文档生成了私钥/公钥。其他细节包括使用 RSA 2048 和填充为 PKCS1。
https://developer.apple.com/documentation/security/1395339-seckeygeneratepair?language=objc
我主要遇到过使用 Windows 商店中的证书进行基于证书的加密,我似乎无法将其公钥放入我之前遇到的示例中。有人尝试过这样的事情吗?
- 该应用会生成公钥私钥对并向我提供公钥。
- 在服务器上,我使用公钥加密消息。
- 在应用中,消息是使用私钥解密的。
以下是我读过的一些引用资料,但似乎都不适合此内容。
https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider?view=netframework-4.7.2 https://codereview.stackexchange.com/questions/92761/very-simple-asymmetric-rsa-encryption-in-c
最佳答案
经过一些尝试和错误,我们从中吸取了教训。
iOS 应按以下格式返回有效的 RSA 公钥。以前,生成的 key 不是标准格式,因此仅适用于 iOS 并对其进行加密和解密。这里还有一行来验证它。
openssl rsa -in example.pem -text -pubin -RSAPublicKey_in
-----开始 RSA 公钥----- MIIBCgKCAQEAz1zfbybUt5jZX5P6ymy+g04wj3iTYCV8eGbkFyqFNsfN8Lnk6x4x zstfnpE6asV6NkBecQnT1a9X6AVxA4Mxq4CeysR10TRr8HGczQGKl7R3Nbvvmgw+ jX8LZGxsQTO6qYWhMAtOPFfsMW9iy3AsDE7OIYfya6y/l919ExbgPzJ+0nLdiBmd bmmzOQ1PaKt3OcxG6qZyBoixRTTOm4UDCLDzYdjz5dS1rbvb7pD15TpkZBkuMRm5 QDv+xhKcz1UFGQP7ssZS++ZoQlF2CZJuLz8R1uUYg4xQnF0r1IBBrlVtKnblgMcA ZykNweGwrdPaWF3PeZmbvG+/m+Kt7/4BJwIDAQAB -----结束 RSA 公钥-----
在 .NET 方面,我能够加密文本,但我需要使用充气城堡来做到这一点。这是示例代码。
公共(public)字符串加密(字符串纯文本,字符串公钥) { UTF8Encoding ByteConverter = new UTF8Encoding(); 使用 (RSACryptoServiceProvider csp = new RSACryptoServiceProvider()) { PemReader 阅读器 = new PemReader(new StringReader(publicKey)); 对象 kp = reader.ReadObject(); csp.ImportParameters(DotNetUtilities.ToRSAParameters((kp as RsaKeyParameters))); var cryptoData = csp.Encrypt(data: ByteConverter.GetBytes(plainText), 填充: RSAEncryptionPadding.Pkcs1); 返回Convert.ToBase64String(加密数据); } }
关于c# - 使用 seckeygeneratepair 中的公钥进行加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51978927/