# Shake

## Description

This operation is used to compute the cryptographic hash of an input using the SHAKE (Secure Hash Algorithm with Keccak) family. SHAKE is a customizable hash function based on the Keccak sponge construction, which allows you to specify the length of the output hash.

SHAKE is part of the SHA-3 family, but it differs from other SHA-3 variants in that it is an Extendable Output Function (XOF). This means you can generate a hash of any length, rather than being restricted to fixed-length outputs like SHA3-256 or SHA3-512.

***

## Data types

These are the input/output expected data types for this operation:

### Input data

![](/files/lPHCVhp93aYrWgLIlhNp) - Data you want to process.

### Output data

![](/files/3itBmKrRqasWlG3dGBlS) - SHAKE hash of the input data.

***

## Parameters

These are the parameters you need to configure to use this operation (mandatory parameters are marked with a <mark style="color:red;">**\***</mark>):

<details>

<summary>Capacity<mark style="color:red;"><strong>*</strong></mark></summary>

The capacity determines the security strength of the SHAKE function. It is a measure of how resistant the function is to various cryptographic attacks, such as collisions or preimage attacks. The higher the capacity, the stronger the security, but the slower the hashing process due to less space available for absorbing the input.

Choose between:

* **128**
* **256**

</details>

<details>

<summary>Size<mark style="color:red;"><strong>*</strong></mark></summary>

Choose the desired length of bits that the output hash will contain.

</details>

***

## Example

Suppose you want to get the **SHAKE hashes** of a series of strings in your input data:

1. In your Pipeline, open the required [Action](/the-workspace/pipelines/actions.md) configuration and select the input **Field**.
2. In the **Operation** field, choose **Shake**.
3. Set **Capacity** to `256`.
4. Set **Size** to `512`.
5. Give your **Output field** a name and click **Save**. You'll get the SHAKE hashes of your input strings.

For example:

{% code overflow="wrap" %}

```
Hello World! -> 35259d2903a1303d3115c669e2008510fc79acb50679b727ccb567cc3f786de3553052e47d4dd715cc705ce212a92908f4df9e653fa3653e8a7855724d366137
```

{% endcode %}

{% hint style="info" %}
You can try out operations with specific values using the **Input** field above the operation. You can enter the value in the example above and check the result in the **Output** field.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onum.com/the-workspace/pipelines/actions/transformation/field-transformation/field-transformation-operations/hashing/shake.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
