在cocapod安装中获取错误CryptoSwift

时间:2017-03-21 14:32:02

标签: ios swift2 cocoapods sha cryptoswift

我成功安装了一个pod“cryptoSwift”,使用swift2在我的xcode项目中获取sha-2。但是在我安装pod之后,当我构建项目时,它会向我显示pod文件中的很多错误。为什么我会收到此错误。什么是我做错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

因为没有" sha-2" exaxctly哪个哈希确实需要尚不清楚。假设sha-2表示SHA-2系列散列函数,常见的选择是SHA-256和SHA-512。

  

使用Common Crypoto(Swift2)的示例

let testString = "testString"
let testHash = sha256(testString)
print("testHash: \(testHash)")

let testHashNSData = NSData(bytes:testHash, length:testHash.count)
print("testHashNSData: \(testHashNSData)")

let testHashBase64 = testHashNSData.base64EncodedStringWithOptions([])
print("testHashBase64: \(testHashBase64)")

测试

testHash: [74, 207, 11, 57, 217, 196, 118, 103, 9, 163, 104, 159, 85, 58, 192, 26, 181, 80, 84, 95, 250, 69, 68, 223, 192, 178, 206, 168, 47, 186, 2, 163]
testHashNSData: <4acf0b39 d9c47667 09a3689f 553ac01a b550545f fa4544df c0b2cea8 2fba02a3>
testHashBase64: Ss8LOdnEdmcJo2ifVTrAGrVQVF/6RUTfwLLOqC+6AqM=

输出:

func sha256(string: String) -> Data? {
    let messageData = string.data(using:String.Encoding.utf8)!
    var digestData = Data(count: Int(CC_SHA256_DIGEST_LENGTH))

    _ = digestData.withUnsafeMutableBytes {digestBytes in
        messageData.withUnsafeBytes {messageBytes in
            CC_SHA256(messageBytes, CC_LONG(messageData.count), digestBytes)
        }
    }
    return digestData
}
  

使用Common Crypoto(Swift3)的示例

let testString = "testString"
let testHash = sha256(string:testString)
print("testHash: \(testHash!.map { String(format: "%02hhx", $0) }.joined())")

let testHashBase64 = testHash!.base64EncodedString()
print("testHash: \(testHasBase64)")

测试

testHash: 4acf0b39d9c4766709a3689f553ac01ab550545ffa4544dfc0b2cea82fba02a3  
testHashBase64: Ss8LOdnEdmcJo2ifVTrAGrVQVF/6RUTfwLLOqC+6AqM=

输出:

#import <CommonCrypto/CommonCrypto.h>

注意:添加到您的桥接标题:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

import org.apache.spark.rdd.RDD

object pizD {

   def filePath = {
    new File(this.getClass.getClassLoader.getResource("wikipedia/wikipedia.dat").toURI).getPath
  }

   def regex(line: String): pichA = {
    ......
    ......
    pichA(t1, t2)
  }
}

case class pichA(t1: String, t2: String)

object dushP {
    val conf = new SparkConf()
    val sc = new SparkContext(conf)

      val mirdd: RDD[pichA] = ???