package networkdata 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) }