Skip to content
Back to skills

Salsa20 12 Encryption Implementation

ASecurity

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.

  • 611 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
educationpythongosecurity

Security analysis

A100/100

Scanned November 11, 2026

npx -y skills add ECNU-ICALK/AutoSkill --skill salsa20-12-encryption-implementation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Salsa20 12 Encryption Implementation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Salsa20 12 Encryption Implementation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ecnu-icalk-salsa20-12-encryption-implementation/badge)](https://www.skillsdirectory.com/skills/ecnu-icalk-salsa20-12-encryption-implementation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: "95639a3a-73db-4631-8a59-fe4ff47a98a7"
name: "Salsa20/12 Encryption Implementation"
description: "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."
version: "0.1.0"
tags:
  - "salsa20"
  - "encryption"
  - "cryptography"
  - "python"
  - "algorithm"
  - "security"
triggers:
  - "implement salsa20 12 encryption"
  - "salsa20 cipher python code"
  - "encrypt text with salsa20"
  - "decrypt salsa20 hex string"
  - "salsa20 12 64 bit key"
---

# 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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in education →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.