Swift CryptoSwift library causing error "fatal error: Array index out of range"

1k Views Asked by At

i have used CryptoSwift for AES encryption/decryption. when i run this code it throws error:

"fatal error: Array index out of range".

using reference from here

What can be the cause for this? Any suggestion will be most appreciate.

code:

 let key = "1234567890123456" // key
   let iv = "1234567890123456" // random
   let message = "This is test string"

    override func viewDidLoad() {
        super.viewDidLoad()

    // encrypt
    let encrypted = AES(key: key, iv: iv, blockMode: .CBC)
    let enc =  encrypted?.encrypt(message.utf8Array, padding: PKCS7())
    println("enc >>  \(enc)")

    // decrypt
    let decrypted = AES(key: key, iv: iv, blockMode: .CBC)
    let dec =  encrypted?.decrypt(enc!, padding: PKCS7())
    println("dec >>  \(dec)")
1

There are 1 best solutions below

0
On

The problem may be here: message.utf8Array, where you convert String to Array. Here is working example:

    let key = "1234567890123456" // key
    let iv = "1234567890123456" // random
    let message = "This is test string"

    let aes = AES(key: key, iv: iv, blockMode: .CBC)

    // encrypt
    let enc = try! aes?.encrypt(message.dataUsingEncoding(NSUTF8StringEncoding)!.arrayOfBytes(), padding: PKCS7())
    print("enc >>  \(enc)")

    // decrypt
    let dec =  try! aes?.decrypt(enc!, padding: PKCS7())
    let str = NSString(data: NSData.withBytes(dec!), encoding: NSUTF8StringEncoding)
    print("dec >>  \(str)")