init pro_sdk
This commit is contained in:
48
tests/test_blowfish.py
Normal file
48
tests/test_blowfish.py
Normal 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)
|
||||
Reference in New Issue
Block a user