init pro_sdk

This commit is contained in:
cyy_mac
2026-06-20 20:02:36 +08:00
commit 5ecd422a59
49 changed files with 4226 additions and 0 deletions

48
tests/test_blowfish.py Normal file
View File

@@ -0,0 +1,48 @@
"""Blowfish 加解密测试 (用已知明密文对)."""
import os
import pytest
from go1_pro_sdk import Blowfish, verify_state
from go1_pro_sdk.codec.blowfish import KNOWN_PAIRS
STATE_FILE = os.path.join(
os.path.dirname(__file__), '..', 'go1_pro_sdk', '_data', 'blowfish_state.bin'
)
@pytest.fixture
def bf():
return Blowfish.from_state_file(STATE_FILE)
def test_state_loads(bf):
assert len(bf.P) == 18
assert len(bf.S) == 4
assert all(len(s) == 256 for s in bf.S)
def test_state_verify(bf):
"""3/3 已知明密文对应该全部匹配."""
assert verify_state(bf) is True
def test_encrypt_known_pairs(bf):
for pt, ct in KNOWN_PAIRS:
assert bf.encrypt_block(pt) == ct
def test_decrypt_known_pairs(bf):
for pt, ct in KNOWN_PAIRS:
assert bf.decrypt_block(ct) == pt
def test_encrypt_decrypt_roundtrip(bf):
data = b'\x12\x34\x56\x78' * 100 # 400B
encrypted = bf.encrypt_ecb(data)
decrypted = bf.decrypt_ecb(encrypted)
assert data == decrypted
def test_encrypt_size_must_be_8x(bf):
with pytest.raises(AssertionError):
bf.encrypt_ecb(b'\x00' * 7)