package ne_data

import (
	"crypto/des"
	"errors"
	"testing"
)

// UDM K4加密
func encrypt(origData, key []byte) ([]byte, error) {
	if len(origData) < 1 || len(key) < 1 {
		return nil, errors.New("wrong data or key")
	}
	block, err := des.NewCipher(key)
	if err != nil {
		return nil, err
	}
	bs := block.BlockSize()
	if len(origData)%bs != 0 {
		return nil, errors.New("wrong padding")
	}
	out := make([]byte, len(origData))
	dst := out
	for len(origData) > 0 {
		block.Encrypt(dst, origData[:bs])
		origData = origData[bs:]
		dst = dst[bs:]
	}
	return out, nil
}

func TestEncrypt(t *testing.T) {
	// key := []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}
	// 0123456789abcdef

	// ki := []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}
	// 0123456789abcdef0123456789abcdef

	// k4 password
	key := []byte{0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34}
	// 1234123412341234

	// k4 crypt ki
	ki := []byte{0x80, 0x5D, 0xAD, 0xC6, 0xE8, 0xA5, 0x4A, 0x0D, 0x59, 0xD6, 0x22, 0xC7, 0xA0, 0x4D, 0x08, 0xE0}
	// 805DADC6E8A54A0D59D622C7A04D08E0

	kis, err := encrypt(ki, key)

	// 加密后的，放导入导入文件里ki
	t.Errorf("kis: %x\n", kis)
	// 3e479135bb16f45dc874a18831b54d71

	t.Errorf("err: %v\n", err)
}
