public static void CheckCrypto1() { var paths = GetHomeEncrypted(); foreach (var f in paths) { var data = File.ReadAllBytes(f); var oldCHK = ReadUInt32LittleEndian(data.AsSpan(0xA, 4)); var chk = HomeCrypto.GetChecksum1(data); oldCHK.Should().Be(chk); bool encrypted = HomeCrypto.GetIsEncrypted1(data); encrypted.Should().BeTrue(); var ph1 = new PKH(data); ph1.DataVersion.Should().Be(1); var decrypted = HomeCrypto.Crypt1(data); decrypted.Length.Should().Be(data.Length); decrypted.Length.Should().Be(ph1.Data.Length); for (int i = 0; i < decrypted.Length; i++) { decrypted[i].Should().Be(ph1.Data[i]); } bool check = HomeCrypto.GetIsEncrypted1(decrypted); check.Should().BeFalse(); ph1.Clone().Should().NotBeNull(); var write = ph1.Rebuild(); write.Length.Should().Be(decrypted.Length); for (int i = 0; i < decrypted.Length; i++) { decrypted[i].Should().Be(write[i]); } var encrypt = HomeCrypto.Encrypt(write); encrypt.Length.Should().Be(data.Length); for (int i = 0; i < data.Length; i++) { encrypt[i].Should().Be(data[i]); } } }
private static byte[] DecryptHome(byte[] data) { HomeCrypto.DecryptIfEncrypted(ref data); //Array.Resize(ref data, HomeCrypto.SIZE_1STORED); return(data); }