我的服务器是Python的,客户机是Swift。我在Python中使用cryptography包,Swift使用SwCrypt。在我创建了一个公钥和私钥对
服务器向iOS发送公钥
iOS创建一个随机的AES密钥并用公钥对其进行加密let publicKeyDER = try SwKeyConvert.PublicKey.pemToPKCS1DER(publicPemReceivedFromServer)
let msg = "this_is_thirty_two_character_lon".data(using: .ascii)!
let random_aes_cypher = try CC.crypt(.encrypt, blockMode: .cbc, algorithm: .aes, padding: .pkcs7Padding, data: msg, key: CC.generateRandom(32), iv: CC.generateRandom(16))
iOS将加密的AES密钥发送回服务器let x = try CC.RSA.encrypt(random_aes_cypher, derKey: publicKeyDER, tag: Data(), padding: .oaep, digest: .sha1)
//Post x to server
服务器用私钥解密加密的AES密钥
私人_密钥.解密(加密的密钥,oaep填充)
在最后一步,解密后的消息包含非常奇怪的字符…知道为什么吗?这种情况在PyCharm上是这样的:这一点在PyCharm上是这样的,这一点在PyCharm上是这样的,这一点在PyCharm上是这样的,这一点在PyCharm上是这样的,这一点在PyCharm上是这样的,这一点在PyCharm上是这样的,这一点在PyCharm上是这样的,这是这样的,在PyCharm上的上,它看起来是这样的,这是这样的,在PyCharm上上,这是这样的,这是这样的,这是这样的,这是这样的,在PyCharm上的一点上是这样的,这是这样的,这是这样的,这是这样的,在PyCharm上的:这一点上的:这一&;?z,?J?L
当我对解密的消息调用len()时,我看到我得到了正确的字符数(在本例中为32个),但是字母与上面所示的一样奇怪。在