摘要功能相当于Swift

时间:2015-11-04 20:36:40

标签: ruby swift encryption hash digest

我正在尝试编写一个身份验证器应用程序,其中我使用SHA512和256来加密某些数据,然后显示处理后的哈希值中的数字。除了.digest函数之外,我基本上已经找到了所有工作。我知道如何在ruby中完成它,如下所示,但我无法弄清楚如何在iOS中获取它。

红宝石:

  def reset_secret
    d = OpenSSL::Digest::SHA512.new
    d << reset_sysid
    d << 'AAaaAAAaaaAAA'
  end

  def reset_input(t)
    [reset_sysid, email, t].join('|')
  end

  def reset_hmac(t)
    hmac = OpenSSL::Digest::SHA256.new
    hmac << reset_secret.digest
    hmac << reset_input(t)
    hmac.digest
    OpenSSL::Digest::SHA256.new(hmac.digest).digest
  end

截至目前的斯威夫特:

func reset_secret()->String {
    return (sysid+"AAaaAAAaaaAAA").sha512()
}

func reset_input(t:Int)->String{
    var time:String = String(t)
    var input:[String] = [sysid, email, time]
    var stringrep:String = "|".join(input)
    return stringrep
}

func reset_hmac(t:Int)->String{
    var firstTime:String = (reset_secret() + reset_input(t)).sha256()
    return firstTime
}

extension String {
func sha256() -> String {
    let data = self.dataUsingEncoding(NSUTF8StringEncoding)!
    var digest = [UInt8](count:Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0)
    CC_SHA512(data.bytes, CC_LONG(data.length), &digest)
    let hexBytes = digest.map { String(format: "%02hhx", $0) }
    return "".join(hexBytes)
}

func sha512() -> String {
    let data = self.dataUsingEncoding(NSUTF8StringEncoding)!
    var digest = [UInt8](count:Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0)
    CC_SHA512(data.bytes, CC_LONG(data.length), &digest)
    let hexBytes = digest.map { String(format: "%02hhx", $0) }
    return "".join(hexBytes)
}

首先,我需要在reset_secret()中获取reset_hmac()的.digest,但我似乎没有在swift中找到相同的内容

0 个答案:

没有答案