【问题标题】:CryptoSWIFT- Type of expression is ambiguous without more contextCryptoSWIFT - 表达式类型不明确,没有更多上下文
【发布时间】:2018-06-06 08:39:37
【问题描述】:

我正在使用cryptoswift 来解密一个字符串

let decrypted2 =  try AES(key: "35%6HyBW", iv: "erewf^%", blockMode: .CBC, padding: .pkcs7).decrypt(text2)

但我不断收到Type of expression is ambiguous without more context Complie 时间错误

【问题讨论】:

    标签: swift macos swift4 cryptoswift


    【解决方案1】:

    这里有两个错别字。

    #1,您使用的原型不存在。 Blockmode 采用CBC(iv:) 参数。

    #2,需要将字符串转换成[UInt8] array

    所以使用:

    let aes = try AES(key: [UInt8]("35%6HyBW".utf8), blockMode: CBC(iv: [UInt8]("erewf^%".utf8)), padding: .pkcs7)
    

    【讨论】:

    • 感谢您的回复。我只是在学习 swift.decrypted2 是一个 AES 对象。如何从中获取解密的字符串。
    • 我只是稍微修改了我的答案。您正在创建一个 AES 对象(用于加密和解密)。所以缺少的是您需要拥有加密的数据/字符串并将 that 传递给 AES .decrypt 函数。查看 CryptoSwift 项目的 .playground,您会在“Chat20”标题下看到一个很好的、不言自明的示例。
    • 感谢您的更新,我已设法使用以下代码加密字符串 ' let aes1 = try AES(key: "passwordpassword", iv: "drowssapdrowssap") let sdata = try aes1.encrypt (Array(akey.utf8)) ' 但问题是我不能使用 Mac 系统序列号作为密钥,似乎 AES 需要特定的密钥长度,我无法更改加密密钥,因为旧的实现使用这种方法。我试图改变这一点,因为在某些情况下我得到null 解密字符串的值stackoverflow.com/questions/50611187/…
    • 我怎样才能用cryptoswift复制同样的东西。请指教
    • 问一个单独的问题(因为这是一个单独的问题),我也会尝试回答那个问题。
    猜你喜欢
    • 2018-06-26
    • 1970-01-01
    • 2021-05-17
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2019-02-01
    • 2019-04-22
    相关资源
    最近更新 更多