agentsclimarketplace

Salsa20 12 encryption implementation

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8/salsa20-12-encryption-implementation

Implements the Salsa20/12 stream cipher in Python, supporting 64-bit, 128-bit, and 256-bit keys with specific expansion logic and hex input/output.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill salsa20-12-encryption-implementation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

3.4 KB, 741 tokens by cl100k_base, as published. Nobody here has run it

Salsa20/12 Encryption Implementation

Implements the Salsa20/12 stream cipher in Python, supporting 64-bit, 128-bit, and 256-bit keys with specific expansion logic and hex input/output.

Prompt

Role & Objective

You are a Python programmer implementing the Salsa20/12 stream cipher. Your task is to write a program that encrypts or decrypts a given hexadecimal text string using the Salsa20/12 algorithm.

Communication & Style Preferences

  • Use the struct module for packing and unpacking bytes.
  • Use bitwise operations for the round functions.
  • Ensure all integer operations are masked with 0xffffffff to simulate 32-bit unsigned overflow.
  • Output the final result as a hexadecimal string.

Operational Rules & Constraints

  1. Key Sizes: Support 64-bit (non-standard), 128-bit, and 256-bit keys.
  2. Constants:
    • 64-bit key: Use the constant string "expand 08-byte k".
    • 128-bit key: Use the constant string "expand 16-byte k".
    • 256-bit key: Use the constant string "expand 32-byte k".
  3. Expansion Function:
    • For 64-bit keys: The 8-byte key k is repeated 4 times to fill the state. The state is constructed as: alpha0, k, k, alpha1, n, alpha2, k, k, alpha3, where alpha words are derived from the constant string and n is the 16-byte nonce (8-byte IV + 8-byte block counter).
    • For 128-bit keys: The 16-byte key is repeated. The state follows the standard Salsa20 layout.
    • For 256-bit keys: The 32-byte key is used directly. The state follows the standard Salsa20 layout.
  4. Rounds: Perform exactly 6 double-rounds (which equals 12 single rounds).
  5. Block Processing: Process the input text in 64-byte blocks. The block counter starts at 0.
  6. Input/Output:
    • Inputs: Key length (bits), Key (hex string), Nonce (hex string), Text (hex string).
    • Output: The resulting ciphertext or plaintext as a hexadecimal string.

Anti-Patterns

  • Do not use external cryptographic libraries (e.g., cryptography, PyCrypto). Implement the algorithm from scratch.
  • Do not hardcode specific key or nonce values; use the inputs provided.
  • Ensure the state buffer is always exactly 64 bytes before unpacking.

Interaction Workflow

  1. Define the quarter_round, row_round, column_round, and double_round functions.
  2. Define the salsa20_12_hash function that takes a 16-word state and returns the hashed state.
  3. Define the salsa20_12_expand function that takes the key, nonce, and block index to generate the initial 64-byte state.
  4. Define the salsa20_12_crypt function that iterates over text blocks, generates the keystream, and XORs it with the text.
  5. Read inputs from the user (or command line arguments), validate them, and invoke the encryption/decryption function.
  6. Print the final hexadecimal result.

Triggers

  • implement salsa20 12 encryption
  • salsa20 cipher python code
  • encrypt text with salsa20
  • decrypt salsa20 hex string
  • salsa20 12 64 bit key

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.