fix login issue*

This commit is contained in:
2026-02-25 12:26:26 -07:00
parent da581f5a20
commit 2c3d0ab580
37 changed files with 4708 additions and 721 deletions

48
test/test_aes.exs Normal file
View File

@@ -0,0 +1,48 @@
# Test AES cipher with known values
Code.require_file("lib/odinsea/util/bit_tools.ex", ".")
Code.require_file("lib/odinsea/net/cipher/ig_cipher.ex", ".")
Code.require_file("lib/odinsea/net/cipher/aes_cipher.ex", ".")
alias Odinsea.Net.Cipher.AESCipher
import Bitwise
# Test: AES crypt should be self-inverse (since it's just XOR)
iv = <<0x0F, 0x0C, 0x0C, 0xA8>>
data = <<0xBF, 0x0A, 0xCD, 0xDE, 0xC7, 0x71, 0xAC>>
IO.puts("Testing AES cipher:")
IO.puts("IV: #{Base.encode16(iv)}")
IO.puts("Data: #{Base.encode16(data)}")
IO.puts("")
# Expand IV to 16 bytes
expanded_iv = :binary.copy(iv, 4)
IO.puts("Expanded IV (16 bytes): #{Base.encode16(expanded_iv)}")
# The AES key (16 bytes)
aes_key = <<
0x13, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0xB4, 0x00, 0x00, 0x00
>>
# Encrypt the expanded IV to get keystream
keystream = :crypto.crypto_one_time(:aes_128_ecb, aes_key, expanded_iv, true)
IO.puts("Keystream: #{Base.encode16(keystream)}")
# XOR data with keystream (only use as many bytes as data)
keystream_bytes = :binary.bin_to_list(keystream) |> Enum.take(byte_size(data))
data_bytes = :binary.bin_to_list(data)
result_bytes = Enum.zip_with(data_bytes, keystream_bytes, fn x, y -> bxor(x, y) end)
result = :binary.list_to_bin(result_bytes)
IO.puts("XOR result: #{Base.encode16(result)}")
IO.puts("")
# Compare with AESCipher.crypt
aes_result = AESCipher.crypt(data, iv)
IO.puts("AESCipher.crypt result: #{Base.encode16(aes_result)}")
IO.puts("Match: #{result == aes_result}")