相关疑难解决方法(0)

如何在iOS中计算SHA-2(理想情况为SHA 256或SHA 512)哈希?

安全服务API似乎不允许我直接计算哈希.有很多公共领域和自由许可的版本可用,但我宁愿使用系统库实现,如果可能的话.

可以通过NSData或普通指针访问数据.

哈希的加密强度对我来说很重要.SHA-256是可接受的最小散列大小.

security hash objective-c sha256 ios

57
推荐指数
2
解决办法
3万
查看次数

如何在Swift中将字符串哈希到SHA512?

我正在构建一个社交媒体应用程序,我想帮助在Swift中将密码字符串编码为SHA512.我在GitHub上找到了CryptoSwift库,但我很难将它加载到我的Swift项目中并将其链接到我的项目文件.有谁知道如何相对容易地完成这个?先谢谢你,凯尔

sha512 swift cryptoswift

7
推荐指数
2
解决办法
6868
查看次数

如何使用swift 3在iOS上散列文件?

我有许多文件将存在于服务器上.用户可以在设备上创建这些类型的文件(plist),然后将其上传到所述服务器(CloudKit).我想通过内容使它们独一无二(唯一的方法应该适应创建日期的变化).我的理解是我应该散列这些文件以获取它们的唯一文件名.我的问题是:

  1. 我的理解是正确的,我想要的是哈希函数吗?
  2. 我应该使用哪种功能(来自CommonCrypto).
  3. 我需要的是摘要?
  4. 我将如何在代码中进行操作?(我假设这应该在NSData实例上进行哈希处理?).我从谷歌搜索的理解是,我需要一个桥接头,但除此之外,使用CommonCrypto困扰我.如果使用第一方API(Apple)有一种更简单的方法,我很满意(我希望尽可能避免使用第三方代码).

非常感谢!

hash ios commoncrypto swift

5
推荐指数
2
解决办法
3112
查看次数

CommonCrypto如何在SWIFT3中使用?

指导是在桥接头中使用#import"CommonCrypto/CommonCrypto.h".这是来自于swift中的SHA256的问题.
但是,当我使用Andi和Graham给出的答案时,Xcode仍抱怨"使用未解析的标识符CC_SHA256_DIGEST_LENGTH ......"

我在想我犯了两个错误之一:(a)我遗漏了没有连接标题并正确导入的东西.即我没有正确设置桥接头.我想知道如何包含库并正确创建桥接头的明确步骤.或者(b)默认情况下不包含库,我实际上需要先下载它并在本地存储才能使用它.我喜欢这方面的指示.

谢谢.

commoncrypto swift

5
推荐指数
1
解决办法
2348
查看次数

使用swift4创建SHA256哈希

我做了一些环顾四周,但我只能找到使用Objective-C创建SHA256哈希的示例.有没有办法只用Swift4做到这一点?

sha256 swift4 xcode9

3
推荐指数
1
解决办法
3748
查看次数

Sha 256在swift 3.0中加密语法错误

    func SHA256() -> String {

    let data = self.data(using: String.Encoding.utf8)
    let res = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH))
    CC_SHA256((data! as NSData).bytes, CC_LONG(data!.count), UnsafeMutablePointer(res!.mutableBytes))
    let hashedString = "\(res!)".replacingOccurrences(of: "", with: "").replacingOccurrences(of: " ", with: "")
    let badchar: CharacterSet = CharacterSet(charactersIn: "\"<\",\">\"")
    let cleanedstring: String = (hashedString.components(separatedBy: badchar) as NSArray).componentsJoined(by: "")
    return cleanedstring

}
Run Code Online (Sandbox Code Playgroud)

我正在使用此函数来加密它在swift 2中工作正常的字符串,现在它不能在swift 3.0中工作在此输入图像描述

xcode ios swift3

2
推荐指数
2
解决办法
4770
查看次数

如何处理“withUnsafeBytes”已弃用警告?

我收到以下代码的弃用警告,

_ = data.withUnsafeBytes {
    _ = CC_SHA256($0, CC_LONG(data.count), &digest)
}
Run Code Online (Sandbox Code Playgroud)

'withUnsafeBytes' 已弃用:withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R改用

我该如何处理这个问题?

更新

根据 Martin 的建议,我使用了下面的Swift-5代码,

func sha256(data : Data) -> Data {
    var hash = [UInt8](repeating: 0,  count: Int(CC_SHA256_DIGEST_LENGTH))
    data.withUnsafeBytes {
        _ = CC_SHA256($0.baseAddress, CC_LONG(data.count), &hash)
    }
    return Data(hash)
}
Run Code Online (Sandbox Code Playgroud)

这甚至会给编译器带来错误,

类型“UnsafePointer<_>”的值没有成员“baseAddress”

更新2

Martins 解决方案在 Xcode 11.3.1 中运行良好。但它在 Xcode 11 中不起作用。

sha256 deprecated swift

-2
推荐指数
1
解决办法
2040
查看次数