【问题标题】:Ios swift SHA1 encryptionios swift SHA1加密
【发布时间】:2017-06-17 18:33:59
【问题描述】:

在我的 android 应用程序中,我有一个散列字符串,我想将它与来自编辑文本的常规字符串进行比较。我使用以下方法来做到这一点

try {
         MessageDigest hashDigester = MessageDigest.getInstance("SHA-1");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
return (new BigInteger(1, hashDigester.digest(pin.getBytes())).toString(16)).equals(object.getPin());

上面的代码工作正常。现在我想在 ios 中使用 swift 3.0 做同样的事情 我尝试使用 CryptoSwift 从这样的编辑文本创建哈希

text.sha1()

我也尝试使用下面的

extension Data {


    func hexString() -> String {
        let string = self.map{String(format:"%02x", Int($0))}.joined()
        return string
    }


    func SHA1() -> Data {
        var result = Data(count: Int(CC_SHA1_DIGEST_LENGTH))
        _ = result.withUnsafeMutableBytes {resultPtr in
            self.withUnsafeBytes {(bytes: UnsafePointer<UInt16>) in
                CC_SHA1(bytes, CC_LONG(count), resultPtr)
            }
        }
        return result
    }

}

extension String {

    func hexString() -> String {
        return self.data(using: .utf8)!.hexString()
    }

    func SHA1() -> String {
        return self.data(using: .utf8)!.SHA1().hexString()
    }

}

两者都给了我相同的结果,但与我的 android 代码不同。 你有什么建议我应该如何调整我的 swift 代码?

【问题讨论】:

  • 你能否举一个你在 Android 和 iOS 上执行 sha-1 的字符串示例(此代码)?
  • 当我在 ios 中插入 407 时,它会返回 35db01d3926745bec110d5709a544e250f7fffc4 ,而在 android 中相同的 407 返回 e6de89674d9f1d7968a70dad4f41b844965b4fdc 这是正确的

标签: android ios swift swift3 sha1


【解决方案1】:

您可以添加一些小的改进来缩短您在 Swift 4 中的代码:

extension Data {

    var hexString: String {
        return map { String(format: "%02hhx", $0) }.joined()
    }

    var sha1: Data {
        var digest = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))
        self.withUnsafeBytes({
            _ = CC_SHA1($0, CC_LONG(self.count), &digest)
        })
        return Data(bytes: digest)
    }

}

extension String {

    var hexString: String {
        return self.data(using: .utf8)!.hexString
    }

    var sha1: Data {
        return self.data(using: .utf8)!.sha1
    }

}

【讨论】:

    【解决方案2】:

    这是我的错!正确的函数我传递了错误的输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-03
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      相关资源
      最近更新 更多