public ChangePasswordMessage(string PasswordOld, string PasswordNew) : base(MessageTypeGameMode.ChangePassword) { byte[] md5hashOld = MeridianMD5.ComputeMD5(PasswordOld); byte[] md5hashNew = MeridianMD5.ComputeMD5(PasswordNew); Hash128Bit pwHashOld = new Hash128Bit(); pwHashOld.HASH1 = BitConverter.ToUInt32(md5hashOld, 0); pwHashOld.HASH2 = BitConverter.ToUInt32(md5hashOld, 4); pwHashOld.HASH3 = BitConverter.ToUInt32(md5hashOld, 8); pwHashOld.HASH4 = BitConverter.ToUInt32(md5hashOld, 12); Hash128Bit pwHashNew = new Hash128Bit(); pwHashNew.HASH1 = BitConverter.ToUInt32(md5hashNew, 0); pwHashNew.HASH2 = BitConverter.ToUInt32(md5hashNew, 4); pwHashNew.HASH3 = BitConverter.ToUInt32(md5hashNew, 8); pwHashNew.HASH4 = BitConverter.ToUInt32(md5hashNew, 12); this.PasswordHashOld = pwHashOld; this.PasswordHashNew = pwHashNew; }
/// <summary> /// Clears and reloads the strings from another dictionary file within the strings folder, /// which was previously initialized during Init() /// </summary> /// <param name="RsbFile">Plain filename, like rsc0000.rsb</param> /// <param name="Language"></param> public void SelectStringDictionary(string RsbFile, LanguageCode Language) { // clear old entries StringResources.Clear(); // set preferred language StringResources.Language = Language; // Save the MD5 hash of this rsb file as our RsbHash. byte[] rsbMD5Hash = MeridianMD5.ComputeGenericFileMD5(StringsFolder + "/" + RsbFile); Hash128Bit rsbHash = new Hash128Bit(); rsbHash.HASH1 = BitConverter.ToUInt32(rsbMD5Hash, 0); rsbHash.HASH2 = BitConverter.ToUInt32(rsbMD5Hash, 4); rsbHash.HASH3 = BitConverter.ToUInt32(rsbMD5Hash, 8); rsbHash.HASH4 = BitConverter.ToUInt32(rsbMD5Hash, 12); RsbHash = rsbHash; // try get the dictionary for argument RsbFile file = GetStringDictionary(RsbFile); // load strings of the rsbfile to use // into the multithreaded dictionary if (file != null) { foreach (RsbResourceID res in file.StringResources) { StringResources.TryAdd(res.ID, res.Text, res.Language); } } // raise event if (StringDictionarySelected != null) { StringDictionarySelected(this, new EventArgs()); } }