我是在Swift中使用密碼加密字符串的字符串,但不知道如何去做。我需要像這樣的東西Swift - 使用用戶密碼加密和解密字符串
let password = "password"
let message = "messageToEncrypt"
let encryptedMessage = encrypt(message, password)
...
let decryptedMessage = decrypt(encryptedMessage, password)
任何意見將不勝感激。
由於
UPDATE < - 刪除這個部分現在
UPDATE 2
確定我現在有以下:
func testEnc() throws {
let ivKey = "tEi1H3E1aj26XNro"
let message = "Test Message"
let password = "pass123"
let aesKey = password.padding(toLength: 32, withPad: "0", startingAt: 0)
do {
let messageArray = Array(message.utf8)
let encrypted = try AES(key: aesKey, iv: ivKey, blockMode: .CBC, padding: .pkcs7).encrypt(messageArray)
let encryptedString = String.init(bytes: encrypted, encoding: .utf8)
let decrypted = try AES(key: aesKey, iv: ivKey, blockMode: .CBC, padding: .pkcs7).decrypt(encrypted)
let decryptedString = String.init(bytes: decrypted, encoding: .utf8)
assert(message == decryptedString)
} catch {
print(error)
}
}
在上面的代碼,該消息被正確加密並解密ñ。
decryptedString
返回與message
相同的值,這是完美的。不過,我需要存儲加密值。在上面的代碼中,encryptedString
總是返回nil。 AES加密Array<UInt8>
沒有作爲字節字符串類嗎?
潛在相關閱讀:https://stackoverflow.com/questions/27072021/aes-encrypt-and-decrypt – CollinD
我已經閱讀過這篇文章,但是這是基於使用密鑰和iv的基於密鑰的加密。我需要一個基於密碼的方法。如果這是要走的路。我如何生成一個密鑰,只給出一個密碼? –
https://security.stackexchange.com/questions/38828/how-can-i-securely-convert-a-string-password-to-a-key-used-in-aes – CollinD