首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CryptoSwift从文件中获取散列

使用CryptoSwift从文件中获取散列
EN

Stack Overflow用户
提问于 2018-03-05 20:29:41
回答 2查看 1K关注 0票数 1

所以我试着从一个文件中获取哈希。使用CryptoSwift库。truth是带有我从VLC网站获得的散列的变量,所以应该是正确的。但是,我生成的散列与我所知道的是事实的散列不同。

我错过了哪一步?

代码:

代码语言:javascript
复制
let filePath = "/Users/pjc/Desktop/vlc-3.0.0.dmg"

let fileURL = URL(fileURLWithPath: filePath)
let truth = "e6f7179cb06809b6101803da3ac4191edb72ecf82f31b8ae7dbf010e1a78ba26"

do {
   let fileData = try Data.init(contentsOf: fileURL)
   print(fileData)
   let fileBytes = fileData.bytes
   let hash = fileBytes.sha256()
   print(hash.debugDescription)

} catch {

   //handle error
   print(error)
}

print(hash)
print(truth)

日志:

代码语言:javascript
复制
fileData: 46818658 bytes
hash.debugDescription: [230, 247, 23, 156, 176, 104, 9, 182, 16, 24, 3, 218, 58, 196, 25, 30, 219, 114, 236, 248, 47, 49, 184, 174, 125, 191, 1, 14, 26, 120, 186, 38]
hash: 105553117580736
truth: e6f7179cb06809b6101803da3ac4191edb72ecf82f31b8ae7dbf010e1a78ba26
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-05 21:13:52

代码语言:javascript
复制
[230, 247, 23, 156, 176, 104, 9, 182, 16, 24, 3, 218, 58, 196, 25, 30, 219, 114, 236, 248, 47, 49, 184, 174, 125, 191, 1, 14, 26, 120, 186, 38]

代码语言:javascript
复制
e6f7179cb06809b6101803da3ac4191edb72ecf82f31b8ae7dbf010e1a78ba26

只是相同哈希值的两种不同的表示形式:第一个表示为整数数组,第二个表示为带有字节十六进制表示的字符串。

因此,.toHexString()库的CryptoSwift方法从数组中创建一个十六进制字符串。

代码语言:javascript
复制
print(hash.toHexString())

应该产生预期的结果。

票数 3
EN

Stack Overflow用户

发布于 2018-03-05 20:55:40

计算散列时不需要框架。您可以使用CommonCrypto做任何事情。您只需添加一个桥接标头,其中包含

代码语言:javascript
复制
#import <CommonCrypto/CommonCrypto.h>

您可以查找这里如何添加桥接头。

代码语言:javascript
复制
extension Data {

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

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

}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49118913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档