我应该使用通过HTTPS从服务器发送的字符串公钥加密某些数据并发送回服务器。
我做了很多研究,还研究了这些主题以及许多与之相关的其他事情,但无法解决我的问题。
我只是说我无法将字符串转换为seckey来使用此功能。
func SecKeyEncrypt(_ key: SecKey,
_ padding: SecPadding,
_ plainText: UnsafePointer<UInt8>,
_ plainTextLen: Int,
_ cipherText: UnsafeMutablePointer<UInt8>,
_ cipherTextLen: UnsafeMutablePointer<Int>) -> OSStatus
1 - how to encrypt and decrypt a String(Plain Text) with RSA public key in ios, swift
这是用于加密的MyCode:
let publickey : SecKey = "# -----BEGIN PUBLIC KEY----- some key ----
END PUBLIC KEY----- #" as! SecKey
let message = "plain text"
let blockSize = SecKeyGetBlockSize(publicKey!)
var messageEncrypted = [UInt8](repeating: 0, count: blockSize)
var messageEncryptedSize = blockSize
var status: OSStatus!
status = SecKeyEncrypt(publickey!, SecPadding(rawValue: 0), message,
message.characters.count, &messageEncrypted, &messageEncryptedSize)
app在第一行崩溃。
答案 0 :(得分:0)
你不能说
tf.contrib.seq2seq.attention_decoder_fn_train()
你不能只是拿一个字符串,并以某种方式神奇地把它作为一个SecKey。您必须从公钥派生 SecKey。
答案 1 :(得分:0)
你有90%的第一个链接。重要的是:
let data2 = Data.init(base64Encoded: serverPublicKey)
它希望输入为Base64编码,您的数据除外,还有# -----BEGIN PUBLIC KEY-----
前缀(和后缀)。在尝试对数据进行base64解码之前,您需要将其关闭。确保data2
中包含合法数据。
尝试使用String.dropFirst(Int)
和String.dropLast(Int)
,您应该能够将输入修剪为仅仅是Base64的内容。 (您可能还需要通过filter { $0 != "\n" }
运行它。)
这应该可以让你到达你需要去的地方。如果你仍然被卡住,请告诉我。我有代码可以放在某个地方,但我手边没有它。