使用Python的加密包解码

时间:2017-04-30 01:51:10

标签: python swift encryption cryptography porting

我的服务器是Python,客户端是Swift。我正在使用cryptography包用于Python,SwCrypt用于Swift。

  • 我创建了一个公钥和私钥对
  • 服务器将公钥发送到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密钥 private_key.decrypt(encrypted_aes_key,oaep_padding)

在最后一步,解密的消息包含非常奇怪的字符。任何想法为什么?它在PyCharm上看起来像这样:\ < >Ddždž䥋wp+6' W= $ O rܨosf .C qKT=_ { B pE #-mntY ^ 0L9f @ = O * \的Bz;“0K&安培; Z, J□\→

当我在解密的消息上调用len()时,我看到我得到了正确的字符数(在这种情况下为32),但字母很奇怪,如上所示。

0 个答案:

没有答案