private bool Verification(string key) { byte[] b = new byte[len_verified]; fs.Seek(len_header, SeekOrigin.Begin); fs.Read(b, 0, len_verified); LPS_VERIFIED lv = (LPS_VERIFIED)b.XorCrypt(MAGIC).ToStruct(typeof(LPS_VERIFIED)); byte[] pwd = new byte[HEADER.H_PWD_ACT_LEN]; Array.Copy(lv.VE_KEY, 0, pwd, 0, pwd.Length); return(Encoding.ASCII.GetString(pwd).Equals(key)); }
public void Initialize(int Magic, string signature, string dest, byte[] EncKey = null) { magic = Magic; header = new LPS_HEADER(); lve = new LPS_VERIFIED(); lve.VE_KEY = new byte[26]; if (EncKey != null) { header.H_PWD_ACT_LEN = EncKey.Length; Array.Copy(EncKey, 0, lve.VE_KEY, 0, EncKey.Length); } header.H_MAGIC = EncKey == null ? Magic : Magic.XorEncrypt(EncKey); header.H_FH_LOC = new long[32]; header.H_SIG = signature; header.H_ENCRYPTED = EncKey != null; if (File.Exists(dest)) { File.Delete(dest); } fs = new FileStream(dest, FileMode.OpenOrCreate); }