예제 #1
0
        public static void SendMessage(ref StreamWriter streamWriter, string content, CustomedAES aes)
        {
            string res = aes.Encrypt(content);

            streamWriter.WriteLine(res + streamWriter.NewLine + aes.Encrypt("L2KDB:Basic:EndOfCurrentTransmission"));
            streamWriter.Flush();
        }
예제 #2
0
파일: L2KDB.cs 프로젝트: creeperlv/L2KDB
 private static void SaveDescription(DatabaseDescription description, string location, CryptographyCredential credential)
 {
     if (credential == null)
     {
         File.WriteAllText(location, "PUBLIC:" + description.isPublic);
     }
     else if (credential.Key == "")
     {
         File.WriteAllText(location, "PUBLIC:" + description.isPublic);
     }
     else
     {
         CustomedAES aes = new CustomedAES();
         aes.Key = credential.Key;
         aes.IV  = credential.IV;
         File.WriteAllText(location, aes.Encrypt("PUBLIC:" + description.isPublic));
     }
 }
예제 #3
0
        public void SingleCycle()
        {
            List <string>             QueuedID1s       = new List <string>();
            Queue <DatabaseOperation> CopiedOperations = new Queue <DatabaseOperation>(OperationQueue.ToArray());

            OperationQueue.Clear();// Clear the queue to receive more operation applications without data lose;
            //OperationQueue = new ConcurrentQueue<DatabaseOperation>();
            //Clear() does not exist in ConcurrentQueue, so, directly replace it with new object.
            foreach (var item in CopiedOperations)
            {
                string id1 = item.id1;
                string id2 = item.id2;
                if (!QueuedID1s.Contains(id1))
                {
                    ;
                }
                QueuedID1s.Add(id1);
                //if (item.GetType() == typeof(DBOperationSave))
                //{
                //    //if*
                //}
                //else if (item.GetType() == typeof(DBOperationRemoveID2))
                //{
                //    //data[item.id1].Remove(item.id2);
                //}
            }
            {
                foreach (var item in QueuedID1s)
                {
                    //Regenerate an ID-1 file.
                    Dictionary <string, object> OriginData = data[item];
                    FileInfo fi = new FileInfo(Path.Combine(FormDirectory.FullName, item + ".lite-db"));
                    File.WriteAllText(fi.FullName, "");//Clear the file.
                    File.WriteAllText(fi.FullName, $"#Database.Ver={DatabaseVersion.Build}\r\n#Form={CurrentForm}{Environment.NewLine}#Flavor={Flavor}{Environment.NewLine}");
                    String        toWrite    = "";
                    StringBuilder builder    = new StringBuilder(toWrite);
                    var           textWriter = new StringWriter(builder);
                    foreach (var SingleData in OriginData)
                    {
                        textWriter.WriteLine($"#DATA:" + SingleData.Key);
                        if (cryptographyCredential.Key == "")
                        {
                            textWriter.WriteLine((string)SingleData.Value);
                        }
                        else
                        {
                            textWriter.WriteLine(aes.Encrypt((string)SingleData.Value));
                        }
                        textWriter.WriteLine("DATA#");
                    }
                    File.AppendAllText(fi.FullName, builder.ToString());
                    try
                    {
                        textWriter.Close();
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        textWriter.Dispose();
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }