Skip to content

Conversation

@dinilH
Copy link

@dinilH dinilH commented Oct 30, 2025

Description

Add FNV-1a (Fowler-Noll-Vo) non-cryptographic hash function implementation.

Changes

  • Add FNV1aHash.java with 32-bit and 64-bit variants
  • Add comprehensive test suite with 30+ unit tests

Why This Contribution?

  • FNV-1a is a widely-used, fast hash function
  • Missing from current algorithm collection
  • Educational value for understanding hash functions
  • Used in real-world applications (hash tables, checksums)

Testing

✅ All tests pass
✅ Edge cases covered (empty, null, Unicode)
✅ Consistency and distribution verified
✅ Both String and byte array inputs tested

References

- Implement FNV-1a (Fowler-Noll-Vo) non-cryptographic hash function
- Support both 32-bit and 64-bit hash variants
- Hash from String or byte array input
- Include hex string output methods
- All operations have O(n) time complexity where n is input length
- Space complexity O(1)

Features:
- Generic implementation supporting String and byte arrays
- Proper null handling with IllegalArgumentException
- Helper methods: hash32Hex() and hash64Hex() for hex output
- UTF-8 encoding support for Unicode characters
- Full JavaDoc documentation

FNV-1a properties:
- Fast computation using simple XOR and multiply operations
- Good hash distribution minimizing collisions
- Widely used in hash tables and checksums
- Not suitable for cryptographic purposes

Tests:
- 30+ comprehensive unit tests covering all methods
- Edge cases: empty string, null input, Unicode
- Consistency tests (same input -> same output)
- Distribution tests (different inputs -> different outputs)
- Both String and byte array input validation

Time Complexity: O(n) where n is input length
Space Complexity: O(1)
@github-actions
Copy link

This pull request has been automatically closed because its workflows or checks failed and it has been inactive for more than 14 days. Please fix the workflows and reopen if you'd like to continue. Merging from main/master alone does not count as activity.

@github-actions github-actions bot closed this Nov 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant