Cryptographically secure SHA-512 hash function for AI agents. Larger output and faster on 64-bit CPUs than SHA-256.
Import directly into Dify, Coze, Cursor, or any tool-calling agent runtime.
{
"name": "sha512_hash",
"description": "Compute the SHA-512 hash of a UTF-8 string and return the 128-character lowercase hex digest. Cryptographically secure; faster than SHA-256 on 64-bit CPUs.",
"parameters": {
"type": "object",
"properties": {
"input_string": {
"type": "string",
"description": "The raw text to hash. Will be encoded as UTF-8 before hashing."
}
},
"required": ["input_string"]
}
}Paste this into your system prompt to keep the generated tool implementation aligned with the contract.
# Task Constraints: SHA-512 Module
SHA-512 produces a 512-bit (128 hex character) digest. It is the largest standard member of the SHA-2 family. It is FASTER than SHA-256 on 64-bit CPUs because the internal word size matches the architecture. Use it for: very large file integrity verification, 64-bit-native performance, or when you want the largest practical output.
## Core Prohibitions
- NEVER use raw SHA-512 alone for password storage. Combine with a salt and a slow KDF.
- NEVER compare SHA-512 against SHA-256 outputs — they are different algorithms.
- NEVER claim SHA-512 is "more secure" than SHA-256 in the cryptographic sense; both are equally secure. The difference is output size and 64-bit performance.
## Standard Implementation
1. Encode the input as UTF-8 bytes.
2. Apply SHA-512 per FIPS 180-4 (`crypto.subtle.digest('SHA-512', bytes)`).
3. Return the 128-character lowercase hex digest.
4. Wrap in try/catch and return `{ success, result, error }`.Works in any Web Crypto / Node 16+ environment. Returns the 128-char hex digest.
async function main(args) {
const { input_string } = args;
if (typeof input_string !== "string") {
return { success: false, result: "", error: "input_string must be a string" };
}
try {
const bytes = new TextEncoder().encode(input_string);
const buf = await crypto.subtle.digest("SHA-512", bytes);
const result = Array.from(new Uint8Array(buf))
.map((b) => b.toString(16).padStart(2, "0"))
.join("");
return { success: true, result, error: "" };
} catch (error) {
return {
success: false,
result: "",
error: "SHA-512 failed: " + (error instanceof Error ? error.message : String(error)),
};
}
}