      - returns: A decrypted buffer
      */
     public func decryptData(data: NSData) throws ->NSData {
-        if CryptoHelper.DISABLE_CRYPTO {
-            return data
+        if let b64Data=NSData(base64EncodedData: data, options: [.IgnoreUnknownCharacters]){
+            return try self._encryptOperation(CCOperation(kCCDecrypt),on:b64Data)
         }
-        return try self._encryptOperation(CCOperation(kCCDecrypt), on:data)
+        throw CryptoError.DecryptBase64Failure
     }
 
 

     - returns: A base 64 string representing a crypted buffer
     */
    public func encryptString(string: String) throws ->String {
        if let data=string.dataUsingEncoding(Default.TEXT_ENCODING, allowLossyConversion:false) {
            let crypted=try encryptData(data)
            return crypted.base64EncodedStringWithOptions(.EncodingEndLineWithCarriageReturn)
        } else {
            throw CryptoError.CodingError(message: "String to data conversion error")
        }
    }

    /**

     - returns: An encrypted buffer
     */
    public func encryptData(data: NSData) throws ->NSData {
        let crypted=try self._encryptOperation(CCOperation(kCCEncrypt),on: data)
        // (!) IMPORTANT
        // the crypted data may produces invalid UTF8 data producing nil Strings
        // We need to base64 encode any NSData.
        let b64Data=crypted.base64EncodedDataWithOptions(.EncodingEndLineWithCarriageReturn)
        return b64Data
    }

    /**
