I have the following code:
public extension SymmetricKey {
init?(base64Encoded base64EncodedKeyString: String) {
guard let keyData = Data(base64Encoded: base64EncodedKeyString) else { return nil }
self.init(data: keyData)
}
var base64: String {
self.withUnsafeBytes { body in
Data(body).base64EncodedString()
}
}
init?(pass: String) {
guard let passHash = passToHash(pass: pass) else { return nil }
self.init(base64Encoded: passHash)
}
}
fileprivate func passToHash(pass: String) -> String? {
guard let passData = pass.data(using: .utf8) else { return nil }
let hashed = SHA256.hash(data: passData)
return hashed.compactMap { String(format: "%02x", $0) }.joined()
}
problem is if I will try to use SymmetricKey
I will see error:
The operation couldn’t be completed. (CryptoKit.CryptoKitError error 1.)
This error means incorrect key size.
If I will try to compare SymmetricKey
s generated with default way and from my custom init I will see difference:
5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5 //from password
cfyk1v2dRIlVKHlpy8qBH71v4BXGSUHPUS3wLn1gzj0= //.bits256
What I’m doing wrong?
Why hashes are different?