//read binary data public void readBinary(string tableName) { ClearData(); TextAsset binaryStream = null; // #if UNITY_EDITOR // if (Constants.USE_ASSETBUNDLE) // { // binaryStream = ResourceLibrary.instance.Load(AssetBundleManager.EBundleType.eDat, tableName) as TextAsset; // } // else // { // binaryStream = (TextAsset)UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Resources/dat/"+tableName+".bytes", typeof(TextAsset)); // } // #else // binaryStream = ResourceLibrary.instance.Load(AssetBundleManager.EBundleType.eDat, tableName) as TextAsset; // #endif binaryStream = Resources.Load("table/" + tableName + "") as TextAsset; if (binaryStream == null) { Debug.Log("Error reading table:" + tableName); return; } // 暂时关闭hash检查 // if (!HashTable.Contains(~ComputeHash(binaryStream.bytes))) // { // Application.Quit(); // } byte[] bytes = TEA.decode(binaryStream.bytes); MemoryStream ms = new MemoryStream(bytes); BinaryReader br = new BinaryReader(ms, Encoding.Unicode); int columns = 0, rows = 0; rows = br.ReadInt32(); columns = br.ReadInt32(); _nRows = rows; _nColumns = columns; if (_nRows == 0 || _nColumns == 0) { Debug.Log("Error reading tablesize Rows is " + _nRows.ToString() + " and _nColumns is " + _nColumns.ToString() + "."); } _data = new string[_nRows, _nColumns]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { _data[i, j] = br.ReadString(); } } }
public C2SAskLogin(ByteBuffer buffer, Connection connection, sbyte[] key = null) : base(3, connection) { key = new sbyte[] { 00, 00, 00, 00 }; //TODO implement dynamic key; _unk1 = buffer.ReadBlock(4); //get username without trailing zeros var uname = buffer.ReadBlock(50); for (int i = 0; i < uname.Length; i++) { if (uname[i] == 0) { byte[] help = new byte[i]; Array.Copy(uname, help, i); Username = Encoding.ASCII.GetString(help); break; } } _unk2 = buffer.ReadBlock(1); _encPassword = buffer.ReadBlock(16); var decPWBytes = TEA.passwordDecodeSBytes(ByteUtils.ToSbytes(_encPassword), key); DecPassword = Encoding.ASCII.GetString(ByteUtils.ToByteArray(decPWBytes)); _unk3 = buffer.ReadBlock(8); }
public void TEAEcnryption(FileInfo file, FormModel model) { bool threadSuccesfull = false; var timeStarted = DateTime.Now; try { //OutputFileName string outputFileName = FileNameCreator.CreateFileEncryptedName( model.Folders.OutputFolder, file.Name, model.AlgorithmName); //Log loggerController.Add(" ! File enc: " + file.Name + ", Alg: " + model.AlgorithmName); //Read a file char by char, and encrypt it using (FileStream fsw = new FileStream(outputFileName, FileMode.Create)) { using (BinaryWriter bw = new BinaryWriter(fsw, new ASCIIEncoding())) { //Writing the extension char[] extension = file.Extension.Substring(1, file.Extension.Length - 1).ToCharArray(); char extensionLength = (char)extension.Length; bw.Write(extensionLength); for (var k = 0; k < extension.Length; k++) { bw.Write(extension[k]); } //Reading and encrypting files var readedValue = File.ReadAllBytes(file.FullName); var encryptedValue = TEA.Encrypt(readedValue); bw.Write(encryptedValue); if (LoadedFilesController._END_OF_ENC_DEC_THREADS) { bw.Dispose(); fsw.Dispose(); File.Delete(outputFileName); Thread.CurrentThread.Abort(); } } } threadSuccesfull = true; Thread.Sleep(250); } catch (Exception ex) { loggerController.Add(" ? Enc exception: " + ex.Message); threadSuccesfull = false; } finally { this.ThreadEnds(file, threadSuccesfull, timeStarted); } }
static void Main(string[] args) { byte[] plain = Encoding.ASCII.GetBytes("Never gonna give you up never gonna get you down"); byte[] key = "abcd12344321dcbadeadbeef12345678".ToByteArray(); TEA tea = new TEA(); TEA tcc = new TEA(0xcccccccc); EncryptionMode cbc = new EncryptionMode( sizeof(uint) * 2, (p, i, k) => tea.Encryptor(p, i, k, 0), (c, i, k) => tea.Decryptor(c, i, k, 0) ); EncryptionMode cbccc = new EncryptionMode( sizeof(uint) * 2, (p, i, k) => tcc.Encryptor(p, i, k, 0), (c, i, k) => tcc.Decryptor(c, i, k, 0) ); var fc = cbc.EncryptCBC(out byte[] fciv, plain, key); var fcc = cbccc.EncryptCBC(out byte[] fcciv, plain, key); var ic = tea.EncryptCBC(out byte[] iciv, plain, key); var icc = tcc.EncryptCBC(out byte[] icciv, plain, key); Console.WriteLine($"函数式密文: {fc.ToHexString()}"); Console.WriteLine($"iv: {fciv.ToHexString()}\n"); Console.WriteLine($"函数式改C密文: {fcc.ToHexString()}"); Console.WriteLine($"iv: {fcciv.ToHexString()}\n"); Console.WriteLine($"接口密文: {ic.ToHexString()}"); Console.WriteLine($"iv: {iciv.ToHexString()}\n"); Console.WriteLine($"接口改C密文: {icc.ToHexString()}"); Console.WriteLine($"iv: {icciv.ToHexString()}\n"); var dfc = cbc.DecryptCBC(fciv, fc, key); var dfcc = cbccc.DecryptCBC(fcciv, fcc, key); var dic = tea.DecryptCBC(iciv, ic, key); var dicc = tcc.DecryptCBC(icciv, icc, key); Console.WriteLine($"函数式明文: {dfc.ToHexString()}"); Console.WriteLine($"iv: {fciv.ToHexString()}\n"); Console.WriteLine($"函数式改C明文: {dfcc.ToHexString()}"); Console.WriteLine($"iv: {fcciv.ToHexString()}\n\n"); Console.WriteLine($"接口明文: {dic.ToHexString()}"); Console.WriteLine($"iv: {iciv.ToHexString()}\n"); Console.WriteLine($"接口改C明文: {dicc.ToHexString()}"); Console.WriteLine($"iv: {icciv.ToHexString()}\n"); Console.WriteLine($"函数式_text: {Encoding.ASCII.GetString(dfc)}"); Console.WriteLine($"函数式改C_text: {Encoding.ASCII.GetString(dfcc)}"); Console.WriteLine($"接口_text: {Encoding.ASCII.GetString(dic)}"); Console.WriteLine($"接口改C_text: {Encoding.ASCII.GetString(dicc)}"); Console.ReadKey(); }
void Start() { Assert.IsNotNull(gameSceneRender); var buffer = new BufferDispatcher <IGameSceneMessage>(); gameSceneRender.Setup(buffer); var inputSubscription = new GameObject(nameof(InputSubscription)).AddComponent <InputSubscription>(); var tea = new TEA <GameSceneState, IGameSceneMessage>( gameSceneRender.CreateState(), gameSceneRender); buffer.SetDispatcher(tea); inputSubscription.dispatcher = tea.Wrap((ChangedInput msg) => new OnInput { state = msg.state }); }
public void TEABMPDecryption(FileInfo file, FormModel model) { bool threadSuccesfull = false; var timeStarted = DateTime.Now; try { if (!file.Extension.Contains("bmp")) { throw new Exception("File is not bmp!"); } //OutputFileName string outputFileName = ""; //Log loggerController.Add(" ! File dec: " + file.Name + ", Alg: " + model.AlgorithmName); //OutputFileName outputFileName = FileNameCreator.CreateFileDecryptedName( model.Folders.OutputFolder, file.Name, ".bmp"); using (FileStream fsw = new FileStream(outputFileName, FileMode.Create)) { using (BinaryWriter bw = new BinaryWriter(fsw, new ASCIIEncoding())) { //Reading and encrypting files var readedValue = File.ReadAllBytes(file.FullName); long pos = readedValue[10] + 256 * (readedValue[11] + 256 * (readedValue[12] + 256 * readedValue[13])); byte[] header = new byte[pos]; for (int i = 0; i < header.Length; i++) { header[i] = readedValue[i]; } byte[] data = readedValue.Skip(header.Length).ToArray(); var decryptedValue = TEA.Decrypt(data); decryptedValue = header.Concat(decryptedValue).ToArray(); bw.Write(decryptedValue); if (LoadedFilesController._END_OF_ENC_DEC_THREADS) { bw.Dispose(); fsw.Dispose(); File.Delete(outputFileName); Thread.CurrentThread.Abort(); } } } threadSuccesfull = true; Thread.Sleep(250); } catch (Exception ex) { loggerController.Add(" ? Dec exception: " + ex.Message); threadSuccesfull = false; } finally { this.ThreadEnds(file, threadSuccesfull, timeStarted); } }
public void TEADecryption(FileInfo file, FormModel model) { bool threadSuccesfull = false; var timeStarted = DateTime.Now; try { //OutputFileName string outputFileName = ""; //Log loggerController.Add(" ! File dec: " + file.Name + ", Alg: " + model.AlgorithmName); //Read a file char by char, and decrypt it //Reading the extension var readedValues = File.ReadAllBytes(file.FullName); int lenght = 0; var extensionLength = (int)readedValues[0]; lenght++; char[] extension = new char[extensionLength]; int j = 0; for (var i = 1; i <= extensionLength; i++) { extension[j] = (char)readedValues[i]; j++; lenght++; } var finalExtesnion = "." + new string(extension); //OutputFileName outputFileName = FileNameCreator.CreateFileDecryptedName( model.Folders.OutputFolder, file.Name, finalExtesnion); using (FileStream fsw = new FileStream(outputFileName, FileMode.Create)) { using (BinaryWriter bw = new BinaryWriter(fsw, new ASCIIEncoding())) { //DEC byte[] newValue = new byte[readedValues.Length - lenght]; int k = 0; for (int i = lenght; i < readedValues.Length; i++) { newValue[k] = readedValues[i]; k++; } var decryptedValue = TEA.Decrypt(newValue); bw.Write(decryptedValue); if (LoadedFilesController._END_OF_ENC_DEC_THREADS) { bw.Dispose(); fsw.Dispose(); File.Delete(outputFileName); Thread.CurrentThread.Abort(); } } } threadSuccesfull = true; Thread.Sleep(250); } catch (Exception ex) { loggerController.Add(" ? Dec exception: " + ex.Message); threadSuccesfull = false; } finally { this.ThreadEnds(file, threadSuccesfull, timeStarted); } }