AddInstruction和 XorInstruction改为非线性,避免 field encryption出现 加密效果为0的情况
parent
542585b1f7
commit
ca3c15c44e
|
@ -14,22 +14,22 @@ namespace Obfuz.EncryptionVM.Instructions
|
||||||
}
|
}
|
||||||
public override int Encrypt(int value, int[] secretKey, int salt)
|
public override int Encrypt(int value, int[] secretKey, int salt)
|
||||||
{
|
{
|
||||||
return value + secretKey[_opKeyIndex] + salt + _addValue;
|
return (value ^ secretKey[_opKeyIndex] ^ salt) + _addValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int Decrypt(int value, int[] secretKey, int salt)
|
public override int Decrypt(int value, int[] secretKey, int salt)
|
||||||
{
|
{
|
||||||
return value - secretKey[_opKeyIndex] - salt - _addValue;
|
return (value - _addValue) ^ secretKey[_opKeyIndex] ^ salt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void GenerateEncryptCode(List<string> lines, string indent)
|
public override void GenerateEncryptCode(List<string> lines, string indent)
|
||||||
{
|
{
|
||||||
lines.Add(indent + $"value += _secretKey[{_opKeyIndex}] + salt + {_addValue};");
|
lines.Add(indent + $"value = (value ^ _secretKey[{_opKeyIndex}] ^ salt) + {_addValue};");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void GenerateDecryptCode(List<string> lines, string indent)
|
public override void GenerateDecryptCode(List<string> lines, string indent)
|
||||||
{
|
{
|
||||||
lines.Add(indent + $"value -= _secretKey[{_opKeyIndex}] + salt + {_addValue};");
|
lines.Add(indent + $"value = (value - {_addValue}) ^ _secretKey[{_opKeyIndex}] ^ salt;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,22 +15,22 @@ namespace Obfuz.EncryptionVM.Instructions
|
||||||
|
|
||||||
public override int Encrypt(int value, int[] secretKey, int salt)
|
public override int Encrypt(int value, int[] secretKey, int salt)
|
||||||
{
|
{
|
||||||
return value ^ secretKey[_opKeyIndex] ^ salt ^ _xorValue;
|
return (value + secretKey[_opKeyIndex] + salt) ^ _xorValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int Decrypt(int value, int[] secretKey, int salt)
|
public override int Decrypt(int value, int[] secretKey, int salt)
|
||||||
{
|
{
|
||||||
return value ^ secretKey[_opKeyIndex] ^ salt ^ _xorValue;
|
return (value ^ _xorValue) - secretKey[_opKeyIndex] - salt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void GenerateEncryptCode(List<string> lines, string indent)
|
public override void GenerateEncryptCode(List<string> lines, string indent)
|
||||||
{
|
{
|
||||||
lines.Add(indent + $"value ^= _secretKey[{_opKeyIndex}] ^ salt ^ {_xorValue};");
|
lines.Add(indent + $"value = (value + _secretKey[{_opKeyIndex}] + salt) ^ {_xorValue};");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void GenerateDecryptCode(List<string> lines, string indent)
|
public override void GenerateDecryptCode(List<string> lines, string indent)
|
||||||
{
|
{
|
||||||
lines.Add(indent + $"value ^= _secretKey[{_opKeyIndex}] ^ salt ^ {_xorValue};");
|
lines.Add(indent + $"value = (value ^ {_xorValue}) - _secretKey[{_opKeyIndex}] - salt;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
using UnityEngine.Assertions;
|
using UnityEngine.Assertions;
|
||||||
using UnityEngine.UIElements;
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
@ -32,6 +33,7 @@ namespace Obfuz.EncryptionVM
|
||||||
{
|
{
|
||||||
int encryptedValue = _opCodes[i].Encrypt(value, _secretKey, i);
|
int encryptedValue = _opCodes[i].Encrypt(value, _secretKey, i);
|
||||||
int decryptedValue = _opCodes[i].Decrypt(encryptedValue, _secretKey, i);
|
int decryptedValue = _opCodes[i].Decrypt(encryptedValue, _secretKey, i);
|
||||||
|
Debug.Log($"instruction type:{_opCodes[i].function.GetType()}");
|
||||||
Assert.AreEqual(value, decryptedValue);
|
Assert.AreEqual(value, decryptedValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue