Swift 对'的重叠访问;盐';,但修改需要独占访问;考虑复制到局部变量
我正在开发具有敏感数据的高度安全的iOS应用程序。 我正在尝试使用AES256加密系统来保护数据 我在这里学习了教程Swift 对'的重叠访问;盐';,但修改需要独占访问;考虑复制到局部变量,swift,encryption,aes,Swift,Encryption,Aes,我正在开发具有敏感数据的高度安全的iOS应用程序。 我正在尝试使用AES256加密系统来保护数据 我在这里学习了教程 XCODE 11(SWIFT 5)告诉我“对盐”的重叠访问,但是修改需要独占访问;考虑复制到局部变量“” 你能告诉我如何解决这个问题吗 多谢各位 这是我的密码: var key = Data(repeating:0, count:kCCKeySizeAES256) var salt = Data(count: 8) salt.withUnsafeMutableB
XCODE 11(SWIFT 5)告诉我“对盐”的重叠访问,但是修改需要独占访问;考虑复制到局部变量“
” 你能告诉我如何解决这个问题吗 多谢各位 这是我的密码:var key = Data(repeating:0, count:kCCKeySizeAES256)
var salt = Data(count: 8)
salt.withUnsafeMutableBytes {
(saltBytes: UnsafeMutablePointer<UInt8>) in//-> Void in
let saltStatus = SecRandomCopyBytes(kSecRandomDefault, salt.count, saltBytes)
if saltStatus == errSecSuccess
{
let passwordData = password.data(using:String.Encoding.utf8)!
key.withUnsafeMutableBytes { (keyBytes : UnsafeMutablePointer<UInt8>) in
let derivationStatus = CCKeyDerivationPBKDF(CCPBKDFAlgorithm(kCCPBKDF2), password, passwordData.count, saltBytes, salt.count, CCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA512), 14271, keyBytes, key.count)
if derivationStatus != Int32(kCCSuccess)
{
setupSuccess = false
}
}
}
else
{
setupSuccess = false
}
}
var key=Data(重复:0,计数:kCCKeySizeAES256)
var盐=数据(计数:8)
salt.withunsafemtablebytes{
(saltBytes:unsafemeutablepointer)in/->Void in
让saltStatus=SecRandomCopyBytes(kSecRandomDefault,salt.count,saltBytes)
如果saltStatus==errSecSuccess
{
让passwordData=password.data(使用:String.Encoding.utf8)!
中的key.withUnsafeMutableBytes{(keyBytes:UnsafeMutablePointer)
让derivationStatus=CCKeyDerivationPBKDF(CCPBKDF算法(kCCPBKDF2),密码,passwordData.count,saltBytes,salt.count,CCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA512),14271,keyBytes,key.count)
如果派生状态!=Int32(kCCSuccess)
{
setupSuccess=false
}
}
}
其他的
{
setupSuccess=false
}
}
最后,我通过如下方式修改代码解决了问题:
salt.withUnsafeMutableBytes { (saltBuffer: UnsafeMutableRawBufferPointer) in
let saltBytes = saltBuffer.bindMemory(to: UInt8.self)
let saltStatus = SecRandomCopyBytes(kSecRandomDefault, saltBytes.count, saltBytes.baseAddress!)
if saltStatus == errSecSuccess {
let passwordData = password.data(using: .utf8)!
key.withUnsafeMutableBytes { (keyBuffer: UnsafeMutableRawBufferPointer) in
let keyBytes = keyBuffer.bindMemory(to: UInt8.self)
let derivationStatus = CCKeyDerivationPBKDF(CCPBKDFAlgorithm(kCCPBKDF2), password, passwordData.count, saltBytes.baseAddress!, saltBytes.count, CCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA512), 14271, keyBytes.baseAddress!, keyBytes.count)
if derivationStatus != Int32(kCCSuccess) {
setupSuccess = false
}
}
} else {
setupSuccess = false
}
}错误是针对哪一行生成的?生成部分还是PBKDF部分?错误是在中的
salt.withunsafemtablebytes{
和key.withunsafemtablebytes{(keyBytes:unsafemtablepointer)行生成的