IPCrypt Code Examples
This page provides code examples for using IPCrypt in various programming languages. These examples demonstrate how to encrypt and decrypt IP addresses using the different modes provided by IPCrypt.
Python Implementation
Deterministic Mode
from ipcrypt import IPCrypt
# Initialize with a 16-byte key
key = bytes.fromhex("000102030405060708090a0b0c0d0e0f")
ipcrypt = IPCrypt(key)
# Encrypt an IPv4 address
ip = "192.168.1.1"
encrypted_ip = ipcrypt.encrypt_deterministic(ip)
print(f"Original IP: {ip}")
print(f"Encrypted IP: {encrypted_ip}")
# Decrypt the IP address
decrypted_ip = ipcrypt.decrypt_deterministic(encrypted_ip)
print(f"Decrypted IP: {decrypted_ip}")
Non-Deterministic Mode
from ipcrypt import IPCrypt
import os
# Initialize with a 16-byte key
key = bytes.fromhex("000102030405060708090a0b0c0d0e0f")
ipcrypt = IPCrypt(key)
# Generate a random 8-byte tweak
tweak = os.urandom(8)
# Encrypt an IPv4 address
ip = "192.168.1.1"
encrypted_ip = ipcrypt.encrypt_nd(ip, tweak)
print(f"Original IP: {ip}")
print(f"Encrypted IP: {encrypted_ip}")
# Decrypt the IP address
decrypted_ip = ipcrypt.decrypt_nd(encrypted_ip, tweak)
print(f"Decrypted IP: {decrypted_ip}")
JavaScript Implementation
Deterministic Mode
// Import the ipcrypt library
const ipcrypt = require('ipcrypt');
// Convert hex string to Uint8Array
function hexToBytes(hex) {
const bytes = new Uint8Array(hex.length / 2);
for (let i = 0; i < hex.length; i += 2) {
bytes[i / 2] = parseInt(hex.substr(i, 2), 16);
}
return bytes;
}
// Initialize with a 16-byte key
const key = hexToBytes("000102030405060708090a0b0c0d0e0f");
// Encrypt an IPv4 address
const ip = "192.168.1.1";
const encryptedIp = ipcrypt.deterministic.encrypt(ip, key);
console.log(`Original IP: ${ip}`);
console.log(`Encrypted IP: ${encryptedIp}`);
// Decrypt the IP address
const decryptedIp = ipcrypt.deterministic.decrypt(encryptedIp, key);
console.log(`Decrypted IP: ${decryptedIp}`);
C Implementation
Deterministic Mode
#include <stdio.h>
#include <string.h>
#include "ipcrypt.h"
int main() {
// Initialize with a 16-byte key
uint8_t key[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
// Original IP address
char ip_str[16] = "192.168.1.1";
uint32_t ip;
inet_pton(AF_INET, ip_str, &ip);
// Encrypt the IP address
uint32_t encrypted_ip = ipcrypt_encrypt(ip, key);
// Convert to string for display
char encrypted_ip_str[16];
struct in_addr addr;
addr.s_addr = encrypted_ip;
inet_ntop(AF_INET, &addr, encrypted_ip_str, sizeof(encrypted_ip_str));
printf("Original IP: %s\n", ip_str);
printf("Encrypted IP: %s\n", encrypted_ip_str);
// Decrypt the IP address
uint32_t decrypted_ip = ipcrypt_decrypt(encrypted_ip, key);
// Convert to string for display
char decrypted_ip_str[16];
addr.s_addr = decrypted_ip;
inet_ntop(AF_INET, &addr, decrypted_ip_str, sizeof(decrypted_ip_str));
printf("Decrypted IP: %s\n", decrypted_ip_str);
return 0;
}
Rust Implementation
Deterministic Mode
use ipcrypt_rs::IPCrypt;
use std::net::Ipv4Addr;
fn main() {
// Initialize with a 16-byte key
let key = hex::decode("000102030405060708090a0b0c0d0e0f").unwrap();
let ipcrypt = IPCrypt::new(&key);
// Original IP address
let ip = "192.168.1.1".parse::<Ipv4Addr>().unwrap();
// Encrypt the IP address
let encrypted_ip = ipcrypt.encrypt_deterministic_v4(&ip);
println!("Original IP: {}", ip);
println!("Encrypted IP: {}", encrypted_ip);
// Decrypt the IP address
let decrypted_ip = ipcrypt.decrypt_deterministic_v4(&encrypted_ip);
println!("Decrypted IP: {}", decrypted_ip);
}
Go Implementation
Deterministic Mode
package main
import (
"encoding/hex"
"fmt"
"net"
"github.com/jedisct1/go-ipcrypt"
)
func main() {
// Initialize with a 16-byte key
key, _ := hex.DecodeString("000102030405060708090a0b0c0d0e0f")
// Original IP address
ip := net.ParseIP("192.168.1.1")
// Encrypt the IP address
encryptedIP, _ := ipcrypt.EncryptDeterministic(ip, key)
fmt.Printf("Original IP: %s\n", ip)
fmt.Printf("Encrypted IP: %s\n", encryptedIP)
// Decrypt the IP address
decryptedIP, _ := ipcrypt.DecryptDeterministic(encryptedIP, key)
fmt.Printf("Decrypted IP: %s\n", decryptedIP)
}
Using IPCrypt in Your Projects
To use IPCrypt in your projects, you can install the appropriate implementation for your programming language:
- Python:
pip install ipcrypt
- JavaScript:
npm install ipcrypt
- Rust:
cargo add ipcrypt-rs
- Go:
go get github.com/jedisct1/go-ipcrypt
For more detailed documentation and examples, visit the Implementations page.