Expand description
Four-Word Networking
Convert network IP addresses into memorable word combinations for human-friendly networking.
§Features
- Perfect IPv4: Converts IPv4 addresses like
192.168.1.1:443into exactly 4 memorable words with 100% perfect reconstruction - Adaptive IPv6: Converts IPv6 addresses into 6, 9, or 12 words using intelligent compression
- Voice-Friendly: Easy to share over phone calls or voice chat
- Error-Resistant: Much less prone to typos than long technical addresses
- Deterministic: Same IP address always produces the same word combination
- Visual Distinction: Different formatting for IPv4 vs IPv6 addresses
- Universal: Works with any valid IP address format
§Examples
§Basic Encoding/Decoding
use four_word_networking::FourWordAdaptiveEncoder;
let encoder = FourWordAdaptiveEncoder::new()?;
let address = "192.168.1.1:443";
// Convert to four words (perfect reconstruction for IPv4)
let words = encoder.encode(address)?;
println!("Address: {} -> {}", address, words);
// Decode back to exact address
let decoded = encoder.decode(&words)?;
assert_eq!(address, decoded);§Random Word Generation
use four_word_networking::FourWordAdaptiveEncoder;
let encoder = FourWordAdaptiveEncoder::new()?;
// Generate random dictionary words (NOT IP encodings)
// Useful for passphrases, test data, or any application needing random words
let random_words = encoder.get_random_words(4);
println!("Random words: {}", random_words.join(" "));
// Generate a 6-word passphrase
let passphrase = encoder.get_random_words(6);
println!("Passphrase: {}", passphrase.join("-"));
// All generated words are valid dictionary words
for word in &random_words {
assert!(encoder.is_valid_word(word));
}§Word Validation
use four_word_networking::FourWordAdaptiveEncoder;
let encoder = FourWordAdaptiveEncoder::new()?;
// Validate user input words
assert!(encoder.is_valid_word("ocean"));
assert!(encoder.is_valid_word("OCEAN")); // Case-insensitive
assert!(!encoder.is_valid_word("xyz123")); // Invalid word
// Get word suggestions for partial input
let hints = encoder.get_word_hints("oce");
assert!(hints.contains(&"ocean".to_string()));Re-exports§
pub use error::FourWordError;pub use error::Result;pub use four_word_adaptive_encoder::FourWordAdaptiveEncoder;pub use four_word_encoder::FourWordEncoder;pub use four_word_encoder::FourWordEncoding;pub use four_word_ipv6_encoder::FourWordGroup;pub use four_word_ipv6_encoder::FourWordIpv6Encoder;pub use four_word_ipv6_encoder::Ipv6FourWordGroupEncoding;pub use ipv6_compression::CompressedIpv6;pub use ipv6_compression::Ipv6Category;pub use ipv6_compression::Ipv6Compressor;pub use ipv6_pattern_feistel::IPv6PatternFeistel;pub use ipv6_pattern_feistel::IPv6PatternId;pub use ipv6_perfect_patterns::IPv6Pattern;pub use ipv6_perfect_patterns::IPv6PatternDetector;pub use pure_ip_compression::MathematicalCompressor;pub use pure_ip_compression::PureIpCompressor;pub use universal_ip_compression::UniversalIpCompressor;
Modules§
- compression
- Advanced compression module for IP addresses and ports
- dictionary4k
- 4,096-word dictionary for four-word networking encoding.
- error
- Error types for four-word networking
- four_
word_ adaptive_ encoder - Adaptive four-word encoder that handles both IPv4 and IPv6 addresses.
- four_
word_ encoder - Four-word encoder for IPv4 addresses.
- four_
word_ ipv6_ encoder - Four-word encoder for IPv6 addresses.
- ipv6_
compression - IPv6 Hierarchical Compression Engine
- ipv6_
pattern_ feistel - IPv6 Pattern Feistel Network
- ipv6_
perfect_ patterns - IPv6 Perfect Patterns - BGP-Based Provider Dictionary and Pattern Detection
- pure_
ip_ compression - Pure Mathematical IP+Port Compression
- universal_
ip_ compression - Universal IP+Port Compression for Four Words
- validation
- Validation and autocomplete functionality for four-word networking.
Constants§
- VERSION
- Version of the four-word networking library