From 1d4bf6058e57061057bc5693159159b459cd8158 Mon Sep 17 00:00:00 2001 From: thecookingsenpai Date: Mon, 25 Dec 2023 13:25:59 +0100 Subject: [PATCH] Initial commit --- .eslintignore | 6 ++ .eslintrc.js | 29 ++++++ .gitignore | 169 ++++++++++++++++++++++++++++++ .prettierrc | 13 +++ Cascade Hashing Algorithm.pdf | Bin 0 -> 197758 bytes README.md | 86 +++++++++++++++ bun.lockb | Bin 0 -> 1626 bytes package.json | 14 +++ src/cascade.html | 191 ++++++++++++++++++++++++++++++++++ src/cascade.ts | 148 ++++++++++++++++++++++++++ src/index.ts | 10 ++ src/style.css | 110 ++++++++++++++++++++ tsconfig.json | 24 +++++ 13 files changed, 800 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 Cascade Hashing Algorithm.pdf create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 package.json create mode 100644 src/cascade.html create mode 100644 src/cascade.ts create mode 100644 src/index.ts create mode 100644 src/style.css create mode 100644 tsconfig.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..6de0af7 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,6 @@ +node_modules +diagrams +data +dist +.github +.vscode \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..3f87fed --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + env: { + commonjs: true, + es6: true, + node: true, + }, + globals: { + NodeJS: "readonly", + }, + extends: "eslint:recommended", + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + }, + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], + rules: { + // indent: ["error", 4, { SwitchCase: 1 }], + "linebreak-style": ["error", "unix"], + quotes: ["error", "double"], + semi: ["error", "never"], + // "no-console": "warn", + "no-unused-vars": ["warn"], + "switch-colon-spacing": ["error", { after: true, before: false }], + "no-extra-semi": "error", + "comma-dangle": ["error", "always-multiline"], + "no-restricted-imports": ["warn"], + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f81d56e --- /dev/null +++ b/.gitignore @@ -0,0 +1,169 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..5aca14c --- /dev/null +++ b/.prettierrc @@ -0,0 +1,13 @@ +{ + "$schema": "http://json.schemastore.org/prettierrc", + "arrowParens": "avoid", + "bracketSpacing": true, + "endOfLine": "lf", + "printWidth": 80, + "singleQuote": false, + "tabWidth": 4, + "semi": false, + "trailingComma": "all", + "useTabs": false, + "SwitchCase": 1 +} diff --git a/Cascade Hashing Algorithm.pdf b/Cascade Hashing Algorithm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..73632083f12e279c46a1458019c68b7f66c93353 GIT binary patch literal 197758 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ℑ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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..0592b9f --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "cascade", + "module": "cascade.ts", + "type": "module", + "devDependencies": { + "bun-types": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "crypto": "^1.0.1" + } +} \ No newline at end of file diff --git a/src/cascade.html b/src/cascade.html new file mode 100644 index 0000000..d591ff4 --- /dev/null +++ b/src/cascade.html @@ -0,0 +1,191 @@ + + + + + + + + + Cascade Hashing Algorithm + + + + +

Cascade Hashing Algorithm

+ + +

Abstract

+

This paper introduces "Cascade," a novel hashing algorithm designed to provide a unique blend of security, + efficiency, and versatility. Distinguished by its iterative processing and integration of dynamic elements like + salts and seeds, Cascade stands out in its approach to transforming input data into fixed-size, non-reversible + hash values. This document outlines the algorithm's structure, its distinctive features, and potential + applications.

+ +

Introduction

+

Background

+

In the realm of digital security, hashing algorithms play a pivotal role. These algorithms are fundamental to a + variety of applications, ranging from secure password storage to ensuring the integrity of data transmission. By + transforming data into a fixed-size string of characters, hashing algorithms create unique 'fingerprints' for + data, which are crucial for verification and comparison purposes.

+ +

Hashing is distinct from encryption in several key ways. While encryption is a two-way process allowing for the + original data to be recovered, hashing is a one-way process designed to prevent the recovery of the original + data from its hash value. This one-way nature makes hashing algorithms particularly valuable for situations + where data privacy and integrity are paramount.

+ +

Over the years, the evolution of hashing algorithms has been driven by the dual needs of robust security and + computational efficiency. Early hashing functions, while pioneering, were soon outpaced by the increasing + capabilities of computational hardware and advancements in cryptographic analysis. This led to the development + of more sophisticated algorithms, such as the MD5 and SHA families. However, vulnerabilities discovered in some + of these algorithms, such as MD5 and SHA-1, highlighted the need for continual innovation in hashing technology. +

+ +

The primary goal of a hashing algorithm is to achieve a balance between several key attributes: + - Collision Resistance: The ability to minimize the probability that two different inputs will + produce the same hash output. + - Speed and Efficiency: The capability to process data quickly and efficiently, which is + especially important for applications that handle large volumes of data. + - Avalanche Effect: Ensuring that a small change in the input results in a significant and + unpredictable change in the output hash.

+ +

The introduction of "Cascade" represents the next step in the evolution of hashing algorithms. Designed with + modern security challenges in mind, Cascade aims to address the limitations of previous hashing functions while + offering enhanced security and efficiency. The development of Cascade is a response to the ever-growing need for + reliable, robust, and secure ways of handling digital data in an increasingly interconnected world.

+ +

Purpose

+

The purpose of the "Cascade" hashing algorithm is to provide an advanced solution that meets the modern demands + of data security. In the digital age, where data breaches and cyber threats are increasingly prevalent, there is + a pressing need for more secure, efficient, and reliable methods of protecting data. Cascade is developed with + the intent to offer improved security features, particularly in terms of collision resistance and sensitivity to + input changes, while maintaining high computational efficiency. It aims to serve as a versatile tool in various + applications, from secure data storage to verifying the integrity of digital transactions.

+ +

Scope

+

This paper will detail the design and functionality of the Cascade hashing algorithm. It will cover the + algorithm's unique approach to processing input data, including its use of dynamic elements such as salts and + seeds, and its iterative hashing process. The paper will also provide a comprehensive analysis of Cascade's + security features, examining its resistance to common cryptographic attacks and its efficiency in various + operational contexts. Finally, potential applications and advantages of Cascade over existing hashing methods + will be explored, highlighting its suitability for diverse security needs in the digital landscape.

+ +

Algorithm Overview

+

The core principle of Cascade involves a combination of iterative processing and dynamic elements integration, distinguishing it from traditional hashing functions. The algorithm is structured to ensure that even minor variations in the input lead to significantly different and unpredictable hash outputs, a property known as the avalanche effect.

+ +

Fundamental Components

+
    +
  • Dynamic Salting: Enhances security against precomputed hash attacks.
  • +
  • Optional Seed Integration: Adds an extra layer of customization and security.
  • +
  • Iterative Process: Ensures a high degree of input sensitivity and diffusion.
  • +
+ +

The Hashing Process

+

The hashing process in Cascade can be summarized in several key steps:

+
    +
  1. Input Preparation: The input data is prepared for hashing, involving normalization and initial processing steps. This preparation ensures consistent handling of different types of input data.
  2. +
  3. Salt Generation and Application: A salt is either generated or provided, and then applied to the prepared input. This step is critical for enhancing the uniqueness and security of the hash.
  4. +
  5. Seed-Based Transformation (Optional): If a seed value is provided, it is integrated during this phase. This integration is done through a complex mixing function that ensures the seed significantly influences the hashing process, adding an extra layer of customization and security.
  6. +
  7. Iterative Hashing and Transformation: The core of Cascade's functionality lies in its iterative processing. Each iteration applies a set of cryptographic operations to the input, thoroughly mixing and transforming the data.
  8. +
  9. Final Hash Computation: After the iterative process, the transformed data undergoes a final set of operations to produce the fixed-size hash output. This output retains the essential characteristics of the input data in a non-reversible form.
  10. +
+ +

"Cascade" is designed to be versatile and adaptable, capable of handling various types of data while providing robust security features. The algorithm's iterative nature and dynamic component integration set it apart in terms of security, efficiency, and applicability in today's digital landscape.

+

Detailed Algorithm Design

+

Input Processing

+

The first step in the Cascade hashing process involves preparing the input data to ensure consistency and optimal handling. This preparation includes two critical phases: standardization and normalization.

+
    +
  • Standardization: Regardless of the input type (text, numerical data, binary content), it is first standardized into a uniform format. This standardization typically involves converting the input into a byte array. The goal is to create a consistent starting point for the hashing process, ensuring that inputs with the same content always yield identical byte representations.
  • +
  • Normalization: The next step is normalization, which is particularly important for textual data. Normalization includes converting characters to a standard form (like UTF-8 encoding) and handling case sensitivity. This step is crucial for maintaining the integrity of the hashing process, especially when dealing with inputs that might have multiple valid representations (like text with accented characters).
  • +
+ +

Once the input is standardized and normalized, it undergoes a pre-hash processing phase, which includes the application of salts and optional seeds.

+
    +
  • Salting: A critical aspect of Cascade is its use of dynamic salts. If a salt is not provided externally, the algorithm generates a random salt of a specified length. This salt is then concatenated with the input data. The inclusion of a salt ensures that even identical inputs produce distinct hash values, significantly enhancing security against pre-computed hash attacks (like rainbow tables).
  • +
  • Seed Integration (Optional): If a seed value is provided, it is integrated during this phase. The seed acts as an additional modifier, altering the hash computation in a unique way based on the seed's value. This integration is done through a complex mixing function that ensures the seed significantly influences the hashing process, adding an extra layer of customization and security.
  • +
+ +

The final step in input processing is preparing the data for the iterative hashing stages of Cascade. This preparation involves:

+
    +
  • Padding: To ensure that the input data aligns with the fixed-size requirements of the hashing process, padding is applied. The padding scheme in Cascade is designed to be deterministic yet less predictable, influenced by a basic hash of the input itself. This approach ensures that the padding varies with the input but remains consistent for the same input, preserving the reproducibility of the hash.
  • +
  • Initial Hash Value Setup: Before entering the iterative stages, an initial hash value is set up. This value is derived from the prepared input and acts as the starting point for the iterative transformations.
  • +
+ +

Salt Generation and Usage

+

In the Cascade algorithm, salts are generated dynamically for each input unless a salt is provided externally. This dynamic generation ensures that each hash computation uses a unique salt, significantly increasing the difficulty of attacks that rely on precomputed hash databases, like rainbow table attacks.

+
    +
  • Length and Randomness: The length of the salt is configurable, allowing for flexibility based on specific security requirements. Cascade generates salts using a cryptographically secure random number generator to ensure high entropy and unpredictability.
  • +
  • Concatenation with Input: Once generated, the salt is concatenated with the input data. This combination alters the initial state of the input, ensuring that even identical inputs will produce different hash outputs when different salts are used.
  • +
  • Consistent Use in Repetitive Hashing: For scenarios where reproducibility of the hash is required (like password verification), the same salt must be used across hashing instances. This necessitates storing the salt alongside the hash output, though it does not need to be kept secret like a cryptographic key.
  • +
+ +

Seed Integration

+

The inclusion of a seed parameter in the Cascade hashing algorithm serves as an additional layer of customization and security. The seed acts as an extra input modifier in the hashing process. When provided, it is combined with the input (and salt, if used) in a way that significantly alters the course of the hash computation. This ensures that the same input, when hashed with different seeds, will produce distinct hash outputs.

+
    +
  • Customization and Security: By allowing users to specify a seed, Cascade offers a way to customize the hashing process for different applications or datasets. This can be particularly useful in environments where an additional level of security is required, as it adds complexity that attackers would need to overcome.
  • +
  • Mixing with Input Data: In Cascade, the seed is integrated through a complex mixing function. This function combines the seed with the input (and salt) in a non-linear and intricate manner, ensuring that the seed significantly influences the resulting hash.
  • +
  • Non-Linearity and Complexity: The mixing process involves non-linear operations, such as bitwise rotations and variable shifts, which are influenced by the content of the seed. This approach ensures that the seed's impact on the hash is substantial and cryptographically sound, making the hash more resistant to various forms of cryptanalysis.
  • +
  • Ensuring Reproducibility: When reproducing a hash (for instance, during password verification), the same seed must be used to ensure that the hash output matches. This means that, similar to the salt, the seed (if used) should be stored or known for future hash computations.
  • +
+

Iterative Steps, Transformations, and Calculations

+

Each iteration of the Cascade algorithm plays a vital role in the transformation of the input data, contributing to the final hash output. The key components of each iteration include:

+ +
    +
  1. Iteration Initialization: At the start of each iteration, the current state of the data is taken as the input. This state evolves with each iteration, reflecting the cumulative effect of the transformations applied.
  2. +
  3. Transformation Steps: Within each iteration, the data undergoes a series of transformations: +
      +
    • Bitwise Operations: Essential cryptographic operations like AND, OR, XOR, and NOT are applied to each byte, contributing to data dispersion and security.
    • +
    • Shifting and Rotating: Bit shifting and rotating are used to redistribute the bits of each byte, crucial for achieving the avalanche effect where minor input changes lead to significant output differences.
    • +
    • Modular Arithmetic: The use of modular arithmetic, often involving large prime numbers, helps maintain the data within a specific size range while adding mathematical complexity.
    • +
    +
  4. +
  5. Combination with Seed: If a seed value is used, it is intricately combined with the data at each iteration. This process ensures that the seed significantly influences the hash output.
  6. +
  7. Accumulation of Changes: The changes made in each iteration accumulate, ensuring that the final hash value is a complex combination of all the transformations applied throughout the process.
  8. +
+ +

Final Hash Computation

+

The final hash computation involves consolidating the outcomes of all iterations into a single hash value. This process includes:

+ +
    +
  1. Aggregation of Iterative Results: The transformed data from each iteration is combined to form a comprehensive result, capturing the impact of the entire iterative process.
  2. +
  3. Final Transformation: Additional cryptographic operations are applied to this aggregated result to ensure a high level of security and to prepare it for the final output.
  4. +
  5. Output Formatting: The final hash is then formatted to meet the predetermined size requirements, typically represented as a hexadecimal string for consistency and ease of use.
  6. +
+ +

This comprehensive approach to hashing, characterized by iterative processing and complex transformations, positions Cascade as a robust and secure hashing solution, suitable for a wide range of applications in the digital domain.

+ +

Security Analysis

+ +

Hash Strength: Resistance to Common Attacks

+

The "Cascade" hashing algorithm is designed to provide robust resistance against common cryptographic attacks, particularly pre-image and collision attacks. Its complex iterative process and the integration of dynamic elements like salt and seeds make reverse-engineering or predicting the input from the hash output computationally infeasible, thereby bolstering its defense against pre-image attacks. Moreover, the algorithm's sensitivity to input changes and seed variability significantly reduces the likelihood of second pre-image attacks, where a different input produces the same hash output as a given input.

+ +

Collision Resistance: Mitigating the Risk of Hash Collisions

+

Cascade's design incorporates several features that contribute to its strong collision resistance. The dynamic salting mechanism ensures that even identical inputs produce distinct hash values, reducing the probability of different inputs yielding the same hash output. The iterative nature of the algorithm and the use of modular arithmetic in the final hash computation contribute to an even distribution of hash values, minimizing collision occurrences.

+ +

Avalanche Effect: Sensitivity to Input Changes

+

One of the critical properties of a robust hashing algorithm is the avalanche effect, where minor changes in the input result in substantial and unpredictable changes in the output. Cascade exhibits a strong avalanche effect due to its complex bitwise operations, bit shifting, and non-linear transformations in each iteration. The impact of the seed and dynamic salt further amplifies this effect, ensuring that any alteration in the input leads to a drastically different hash output, thus enhancing the algorithm's overall security.

+ +

Conclusion

+ +

Summary of Cascade's Key Features

+

"Cascade" represents a novel approach in the field of hashing algorithms. Its design is characterized by its unique combination of iterative transformations, dynamic salting, and optional seed integration. The algorithm stands out for its design choices aimed at enhancing security and efficiency. Key features of Cascade include robust security measures against common cryptographic attacks, a versatile and flexible approach to handling various types of data, and the potential to significantly impact the evolution of hashing algorithms, especially in areas requiring enhanced security and customized hashing.

+ +

Future Work and Research Directions

+

The development of Cascade opens several avenues for future work and research. Key areas include empirical testing and validation, performance optimization, and adaptation and integration into existing systems and emerging technologies. The ongoing scrutiny and testing in practical applications will be essential to validate and potentially refine Cascade's security properties, ensuring its reliability and effectiveness as a hashing solution in the digital era.

+ + + + + \ No newline at end of file diff --git a/src/cascade.ts b/src/cascade.ts new file mode 100644 index 0000000..fd254de --- /dev/null +++ b/src/cascade.ts @@ -0,0 +1,148 @@ +/* HUGE DISCLAIMER: NOT TESTED | MADE FOR FUN | IT IS AN EXPERIMENT | still...it works surprisingly well! */ + +import { randomBytes } from "crypto" + +export default class Cascade { + // Class properties with type annotations + P: number + hashSize: number = 32 + saltSize: number + modulo: bigint = BigInt( + "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + ) + iterations: number + seed: string | null + + constructor( + prime: number = 31, + saltSize: number = 16, + iterations: number = 1, + seed: string | null = null, + ) { + this.P = prime + this.saltSize = saltSize + this.iterations = iterations + this.seed = seed + } + + generateSalt(): Buffer { + return randomBytes(this.saltSize) + } + generatePadding(input: string): string { + let padding = "" + let inputHash = this.simpleHash(input) + + for (let i = 0; i < this.hashSize - this.saltSize; i++) { + let paddingChar = (inputHash + i) % 256 + padding += String.fromCharCode(paddingChar) + } + + return padding + } + + private simpleHash(input: string): number { + let hash = 0 + for (const char of input) { + hash = (hash + char.charCodeAt(0)) % 256 + } + return hash + } + + interleaveWithSalt(inputBuffer: Buffer, saltBuffer: Buffer): Buffer { + let interleavedBuffer = Buffer.alloc( + inputBuffer.length + saltBuffer.length, + ) + let inputIndex = 0, + saltIndex = 0 + + for (let i = 0; i < interleavedBuffer.length; i++) { + if (i % 2 === 0 && inputIndex < inputBuffer.length) { + interleavedBuffer[i] = inputBuffer[inputIndex++] + } else if (saltIndex < saltBuffer.length) { + interleavedBuffer[i] = saltBuffer[saltIndex++] + } + } + return interleavedBuffer + } + mixSeed(combinedBuffer: Buffer): Buffer { + if (this.seed === null) { + return combinedBuffer + } + + const seedBuffer = Buffer.from(this.seed) + let extendedSeedBuffer = seedBuffer + while (extendedSeedBuffer.length < combinedBuffer.length) { + extendedSeedBuffer = Buffer.concat([extendedSeedBuffer, seedBuffer]) + } + + for (let i = 0; i < combinedBuffer.length; i++) { + // Enhanced mixing: Combine XOR with bitwise rotations + let mix = combinedBuffer[i] ^ extendedSeedBuffer[i] + mix = (mix << i % 8) | (mix >>> (8 - (i % 8))) // Bitwise rotation + combinedBuffer[i] = mix + } + + return combinedBuffer + } + + hash(input: string, providedSalt?: string): { hash: string; salt: string } { + // Validate and sanitize input + if (typeof input !== "string") { + throw new Error("Invalid input type") + } + + let inputBuffer = Buffer.from(input) + let salt: Buffer + + // Validate and use provided salt, if available + if (providedSalt !== undefined) { + if (typeof providedSalt !== "string") { + throw new Error( + "Invalid salt format: Salt must be a UTF-8 string", + ) + } + salt = Buffer.from(providedSalt, "utf8") + } else { + salt = this.generateSalt() + } + + inputBuffer = this.interleaveWithSalt(inputBuffer, salt) + + if (this.seed !== null) { + inputBuffer = this.mixSeed(inputBuffer) + } + + let hashValue = BigInt(0) + for (let iter = 0; iter < this.iterations; iter++) { + inputBuffer.forEach((byte, index) => { + hashValue = + ((hashValue << BigInt(5)) + + hashValue + + BigInt(byte) + + BigInt(index)) % + this.modulo + }) + + if (iter < this.iterations - 1) { + inputBuffer = Buffer.from(hashValue.toString(16), "hex") + } + } + + let finalHash = hashValue ^ BigInt("0x123456789ABCDEF123456789ABCDEF12") + let hashHexString = finalHash + .toString(16) + .padStart(this.hashSize * 2, "0") + .substring(0, this.hashSize * 2) + + return { hash: hashHexString, salt: salt.toString("hex") } + } +} + +/* NOTE Usage -------------------------------- + +const hasher = new Cascade(37, 20, 5, "optional_seed") +const result = hasher.hash("Hello, world!", "opional_salt") +console.log("Salt:", result.salt) +console.log("Hash:", result.hash) + +*/ diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..a87f78c --- /dev/null +++ b/src/index.ts @@ -0,0 +1,10 @@ +import Cascade from "./cascade" + +async function go() { + const hasher = new Cascade(37, 20, 5, "optional_seed") + const result = hasher.hash("Hello, world!", "opional_salt") + console.log("Salt:", result.salt) + console.log("Hash:", result.hash) +} + +go() diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..c4e9a65 --- /dev/null +++ b/src/style.css @@ -0,0 +1,110 @@ +body { + font-family: 'Arial', sans-serif; + margin: 0; + padding: 0; + background: #f4f4f4; + color: #333; + line-height: 1.6; +} + +.container { + width: 80%; + margin: auto; + overflow: hidden; +} + +header { + background: #333; + color: #fff; + padding-top: 30px; + min-height: 70px; + border-bottom: #bbb 1px solid; +} + +header a { + color: #fff; + text-decoration: none; + text-transform: uppercase; + font-size: 16px; +} + +header ul { + padding: 0; + margin: 0; + list-style: none; + overflow: hidden; +} + +header li { + float: left; + display: inline; + padding: 0 20px 0 20px; +} + +header #branding { + float: left; +} + +header #branding h1 { + margin: 0; +} + +header nav { + float: right; + margin-top: 10px; +} + +header .highlight, header .current a { + color: #e8491d; + font-weight: bold; +} + +header a:hover { + color: #ffffff; + font-weight: bold; +} + +article#main-col { + float: left; + width: 70%; +} + +aside#sidebar { + float: right; + width: 30%; + margin-top: 10px; +} + +article#main-col h1 { + color: #333; +} + +/* Headings */ +h1, h2, h3 { + margin-bottom: 20px; + color: #333; +} + +/* Links */ +a { + color: #333; + text-decoration: none; +} + +ul { + list-style: none; + padding: 0; +} + +p { + margin-bottom: 10px; +} + +/* Footer */ +footer { + padding: 20px; + margin-top: 20px; + color: #ffffff; + background-color: #333; + text-align: center; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3423534 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ESNext", + "sourceMap": true, + "sourceRoot": "/", + "inlineSources": true, + "outDir": "./dist", + "baseUrl": "./", + "types": ["node"], + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": false, + "noImplicitAny": false, + "strictBindCallApply": false, + "forceConsistentCasingInFileNames": false, + "noFallthroughCasesInSwitch": false + } +} \ No newline at end of file