/// <summary> /// Read a string from the specified offset. /// </summary> /// <param name="offset">Offset to read from.</param> /// <param name="encodingType">Encoding, default: UTF-8</param> /// <returns>Read string.</returns> /// <exception cref="ArgumentOutOfRangeException">Gets thrown when an unknown string encoding is provided.</exception> public string ReadString(ulong offset, StringEncodingType encodingType = StringEncodingType.Utf8) { var bytes = new List <byte>(); do { bytes.Add(ReadByte(offset)); offset++; } while (bytes[bytes.Count - 1] != 0x0); bytes = bytes.Take(bytes.Count - 1).ToList(); switch (encodingType) { case StringEncodingType.ASCII: return(Encoding.UTF8.GetString(bytes.ToArray())); case StringEncodingType.Unicode: return(Encoding.UTF8.GetString(bytes.ToArray())); case StringEncodingType.Utf8: return(Encoding.UTF8.GetString(bytes.ToArray())); default: throw new ArgumentOutOfRangeException(nameof(encodingType), encodingType, null); } }
/// <summary> /// Write a string to the specified offset. /// </summary> /// <param name="offset"></param> /// <param name="data"></param> /// <param name="encodingType"></param> /// <param name="zeroTerminated"></param> /// <exception cref="ArgumentOutOfRangeException"></exception> public void WriteString(ulong offset, string data, StringEncodingType encodingType = StringEncodingType.Utf8, bool zeroTerminated = true) { if (zeroTerminated) { data += "\0"; } byte[] stringBytes; switch (encodingType) { case StringEncodingType.ASCII: stringBytes = Encoding.ASCII.GetBytes(data); break; case StringEncodingType.Unicode: stringBytes = Encoding.Unicode.GetBytes(data); break; case StringEncodingType.Utf8: stringBytes = Encoding.UTF8.GetBytes(data); break; default: throw new ArgumentOutOfRangeException(nameof(encodingType), encodingType, null); } WriteBytes(offset, stringBytes); }
public string Encrypt( string plaintext, StringEncodingType encoding ) { var bytesIn = ByteEncoding.StringToBytes(plaintext); var encryptedBytes = Encrypt(bytesIn); string returnValue = null; switch(encoding) { case StringEncodingType.Base64: returnValue = ByteEncoding.BytesToBase64(encryptedBytes); break; case StringEncodingType.Hex: returnValue = ByteEncoding.BytesToHex(encryptedBytes); break; default: throw new ArgumentException("Unknown encoding type."); } Array.Clear(bytesIn, 0, bytesIn.Length); Array.Clear(encryptedBytes, 0, encryptedBytes.Length); return returnValue; }
public string Decrypt( string cipherText, StringEncodingType encoding ) { byte[] bytesIn = null; switch(encoding) { case StringEncodingType.Base64: bytesIn = ByteEncoding.Base64ToBytes(cipherText); break; case StringEncodingType.Hex: bytesIn = ByteEncoding.HexToBytes(cipherText); break; default: throw new ArgumentException("Unknown encoding type."); } var bytesOut = Decrypt(bytesIn); var returnValue = ByteEncoding.BytesToString(bytesOut); Array.Clear(bytesIn, 0, bytesIn.Length); Array.Clear(bytesOut, 0, bytesOut.Length); return returnValue; }
public string Encrypt(string plaintext, StringEncodingType encoding) { var plaintext1 = ByteEncoding.StringToBytes(plaintext); var bytes = Encrypt(plaintext1); string str; switch (encoding) { case StringEncodingType.Hex: str = ByteEncoding.BytesToHex(bytes); break; case StringEncodingType.Base64: str = ByteEncoding.BytesToBase64(bytes); break; default: throw new ArgumentException("Unknown encoding type."); } Array.Clear(plaintext1, 0, plaintext1.Length); Array.Clear(bytes, 0, bytes.Length); return str; }
public string Decrypt(string cipherText, StringEncodingType encoding) { byte[] cipherText1; switch (encoding) { case StringEncodingType.Hex: cipherText1 = ByteEncoding.HexToBytes(cipherText); break; case StringEncodingType.Base64: cipherText1 = ByteEncoding.Base64ToBytes(cipherText); break; default: throw new ArgumentException("Unknown encoding type."); } var bytes = Decrypt(cipherText1); var str = ByteEncoding.BytesToString(bytes); Array.Clear(cipherText1, 0, cipherText1.Length); Array.Clear(bytes, 0, bytes.Length); return str; }
public string Decrypt(string cipherText, StringEncodingType encoding) { byte[] bytesIn = null; switch (encoding) { case StringEncodingType.Base64: bytesIn = ByteEncoding.Base64ToBytes(cipherText); break; case StringEncodingType.Hex: bytesIn = ByteEncoding.HexToBytes(cipherText); break; default: throw new ArgumentException("Unknown encoding type."); } var bytesOut = Decrypt(bytesIn); var returnValue = ByteEncoding.BytesToString(bytesOut); Array.Clear(bytesIn, 0, bytesIn.Length); Array.Clear(bytesOut, 0, bytesOut.Length); return(returnValue); }
public string Encrypt(string plaintext, StringEncodingType encoding) { var bytesIn = ByteEncoding.StringToBytes(plaintext); var encryptedBytes = Encrypt(bytesIn); string returnValue = null; switch (encoding) { case StringEncodingType.Base64: returnValue = ByteEncoding.BytesToBase64(encryptedBytes); break; case StringEncodingType.Hex: returnValue = ByteEncoding.BytesToHex(encryptedBytes); break; default: throw new ArgumentException("Unknown encoding type."); } Array.Clear(bytesIn, 0, bytesIn.Length); Array.Clear(encryptedBytes, 0, encryptedBytes.Length); return(returnValue); }