|
UBAID-R-RAHMAN wrote: Can you write the algorithm to find it? Yes.
One simple generates all variants of the same lengths, and calculate EACH hash. If it is unsalted, the original is there. If it is salted, you get some rubbish that generates the same hash.
If you hid it then it cannot be salted, since that would mean the original cannot be found.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
this is the algorithem
class MainClassForAlgo
{
public static string EncryptString(string Message, string Passphrase)
{
byte[] Results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));
// Step 2. Create a new TripleDESCryptoServiceProvider object
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
// Step 3. Setup the encoder
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
// Step 4. Convert the input string to a byte[]
byte[] DataToEncrypt = UTF8.GetBytes(Message);
// Step 5. Attempt to encrypt the string
try {
ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
}
finally
{
// Clear the TripleDes and Hashprovider services of any sensitive information
TDESAlgorithm.Clear();
HashProvider.Clear();
}
// Step 6. Return the encrypted string as a base64 encoded string
return Convert.ToBase64String(Results);
}
public static string DecryptString(string Message, string Passphrase)
{
byte[] Results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));
// Step 2. Create a new TripleDESCryptoServiceProvider object
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
// Step 3. Setup the decoder
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
// Step 4. Convert the input string to a byte[]
byte[] DataToDecrypt = Convert.FromBase64String(Message);
// Step 5. Attempt to decrypt the string
try
{
ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
}
finally
{
// Clear the TripleDes and Hashprovider services of any sensitive information
TDESAlgorithm.Clear();
HashProvider.Clear();
}
// Step 6. Return the decrypted string in UTF8 format
return UTF8.GetString( Results );
}
public static void Main(string[] args)
{
// The message to encrypt.
string Msg = "poultry outwits ants";
string Password = "4624d200580677270a54ccff86b9610e";
string EncryptedString = EncryptString("poultry outwits ants", Password);
string DecryptedString = DecryptString(EncryptedString, Password);
Console.WriteLine("Message: {0}",Msg);
Console.WriteLine("Password: {0}",Password);
Console.WriteLine("Encrypted string: {0}",EncryptedString);
Console.WriteLine("Decrypted string: {0}",DecryptedString);
Console.ReadKey();
}
}
|
|
|
|
|
Hi all,
I am just wondering if there are any good XAML templates for Windows 10.
Unfortunately VS2015 provides just a blank template... from my point of view this quite minimalistic for a release version of Visual Studio, and Windows Phone and Store apps always had at least some Pivot style apps (even though these have been quite minimalistic either ), etc.
Anyhow, I am looking for some templates that look like Groove Music or the new Maps app.
Are there any good resources out there?
Thanks in advance!
|
|
|
|
|
We do need some templates. Although i am not so sure i would use them anyway. If past experiences with code on MSDN have taught me anything, its that Microsoft's code is usually very messy. And although XAML is great, its also naturally very messy.
Im not so sure I would enjoy fixing up more mess. I think I'd rather spend timethe to learn it myself.
|
|
|
|
|
Hello everyone,
is there anyone who could help me on this? I create a c# application with localdb and i want to have access in this database from different pc in my network, eg i have a secretary with her pc and me with another and i want to use my application from my computer and the changes i have done in database i want to see my partner in her pc. I search for this subject in different forums but nothing. Sorry for my bad english.
|
|
|
|
|
The main change you need to make is to your connections string: make sure you load it from a configuration file of some description (along with your other parameters) and you can use a LOCALDB one from your machine, and a IP based or Server name based address from the other.
Then it's up to you and how you code your app to "notice" changes if you want existing displays on the secretarial machine to update because of changes you make to the DB on yours. there are a lot of different ways to do that, but they all add a layer of complication so think carefully before you go down that route unless you need it.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
First of all thank you for your reply.
I have done this and i cant access to db, if i change the connection string from configuration file then throw exception error 52.
I copy a shortcat from server to client and the result is the application starts but throw an exception with this error 52
|
|
|
|
|
Check that your SQL Server instance is configured to accept remote connections, and that the port it is using is unblocked in your firewall.
If that doesn't fix it, start looking at the entire error message - it may contain further information.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
If i understand correctly you tell me to use SQL Server Configuration Manager and from there enable tcp/ip but if you remember i use localdb in my project so no sql server express installed in these two computers. Should i install sql server express on computers i want use my application to do this?
Thank you for you help and sorry bothering you!!!
|
|
|
|
|
If you mean you ar eusing Access or similar, then that's a poor idea (and don't call that "localdb" in future - that's often used for an SQL Server instance name).
Access is a very poor multiuser database - it can work, but it has always given massive problems because it is intended to be a single user system, and local caching and suchlike can really, really mess your code and data up.
If you need multiple users (or even multiple applications) accessing your data, then you really need to switch to a multiuser system, such as SQL Server or MySql - they "wrap around" an access DB and provide multiuser access seamlessly.
I'd suggest SQL Server - there is a free version called Sql Server Express - and two instances: one on the secretaries machine (or better on a third machine) and a separate one on your development machine, so you can change and text your code without risking damaging the "production" database. Nothing, but nothing is as mortifying as discovering that you forgot the WHERE clause in an UPDATE or DELETE and having to explain you just elephanted someone else's whole day's work...
If you have written your code well, it's a simple change that shouldn't take very long: new connection string in the config file, and change the OdbcConnection, OdbcCommand and suchlike objects to their SqlConnection, SqlCommand, etc. equivalents will be 95% of it.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
i use sql server express localdb. This is the connection string i used:
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\mydb.mdf;Integrated Security=True" providerName="System.Data.SqlClient" (this is from app.config).
What changes must do here? Realy big sorry for bothering you but i need your help!
I try this and did not work: In the "third machine" i open the configuration file and use this connection string -> connectionString="Data Source=192.168.1.44;AttachDbFilename=|DataDirectory|\mydb.mdf;Integrated Security=True" providerName="System.Data.SqlClient"
Where is the problem?
Thank you friend for your time
|
|
|
|
|
Start SSMS, and it begins with a "connect to Server" dialog - look at the "Server name:" box.
In my case, that would be "GRIFFPC\SQLEXPRESS"
That is your server instance name, and that is what you want to use in the other PC.
Now start VS and try setting up a connection in VS with the Server Explorer pane:
1) Open Server Explorer.
2) Right click "Data connections" and select "Add connection"
3) In the dialog that follows, select your DataSource (the name from above) and database, specify the security info, and press the "Test connection" button.
4) When the connection works, press "OK"
5) Highlight your database in the Server Explorer pane, and look at the Properties pane. A working example of the connection string will be shown, which you can copy and paste into your app or config file.
But seriously, it is a bad idea to use the same instance of SQL server for "production" and "development" - it never ends well.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Thank you very much for your help. What do you suggest me to do if this is not good idea (i refer to: "But seriously, it is a bad idea to use the same instance of SQL server for "production" and "development" - it never ends well.")?
WHAT would you do in my case?
|
|
|
|
|
Install a second instance of SQL Server express on a different computer: either the secretaries or (better) a server if you have one.
Because your connection string should be in a config file rather than hard-coded into your app, it's easy to have different config files for your PC - one for production, one for development.
And it should be on a computer that is backed up regularly, so that the DB is also backed up. (I'm betting that you never find the time to back up your dev PC, but that's the one at most risk from accidental damage - it's far, far too easy to make mistakes!) Once data gets to the "production" status - and if someone else is using it, that counts - you start risking a lot of embarrassment as well as significant damage to other people's work.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I assumed that you are using the local file .mdf.
But if you are planning to access you data in the network, why not use the database server rather than using a file shortcut.
|
|
|
|
|
Hello Gilbert,
could you tell me what did you mean step by step because i have no experience. I thought that if i use localdb i can't use database server to do what i want thus i use the shortcut instead.
Thank you in advance
|
|
|
|
|
|
|
Hi Everyone,
No this is not a homework question; not even sure if this question belongs in here or if anyone has the time to have a look over these, but here's the situation: I was recently provided with 5 technical questions over eMail from a recruiter for a very large video game company for me to answer and return to the recruiter, who was supposed to call me and go over my answers but hasn't done so yet. So of course I'm getting paranoid as I sit waiting for some sort of response regarding my answers and so I thought, heck, why not post the questions and my answers somewhere here on CodeProject in the hopes that at least one of the mad experts in this community might have a few minutes just to read through my answers and critique them (I mean really let me have it if need be). I've been developing for a long time but you know how the interview process goes, every day that you have to wait for a response is agonizing and can cause you to start doubting yourself.
So at the risk of this being in the wrong area of CP, here are the questions that I was given and the answers that I came up with (with a surprising minimum of Googling and any kind of word-for-word parroting of things that I've read and assimilated over the years):
1. In C#, what is an interface?
An Interface in C# is a way to achieve polymorphism within modules so that similar classes that need to readily utilize methods implemented in other common classes can do so without having to incur the overhead of instantiating the other classes within themselves. Interfaces are type declarations that can contain collections of declarations of methods, events, properties and indexers without their implementations; the actual implementations are left to any class that chooses to implement that interface. And since interfaces are technically contracts guaranteeing that any class that implements said interface MUST contain actual implementations of each and every method, event, property and indexer declared in the interface (with identical signatures). Interfaces are a valuable way of making code extensible and introducing abstraction into multiple classes that have a need for executing common tasks with slightly different implementations. The Interface concept can be counter-productive if it declares any methods that are specific and relevant to only one class, as the purpose of the Interface is to eliminate redundant method implementations between more than one class that must use said method. This is why interfaces best contain methods, properties, etc., that perform a related set of functionalities that need to be available to as many classes as possible to provide design abstraction, but only if the abstraction is actually necessary and does not lead to undue increased complexity and difficulty maintaining reusable code.
2. What does the “using” statement do in C#? (note: we are referring to its usage in code blocks, not when used to import namespaces).
The using statement in C# (not to be confused with the using directive to import namespaces) is used to provide a shorthand way to simplify the code necessary to properly encapsulate the acquisition, usage and proper disposal of a resource used within an object. At the IL level, the using statement is actually translated by the CLR (or expanded so to speak) into an instantiation of the required resource into an object, followed by an implementation of a try{}...finally{} block in which the execution of a method on that object's resource is attempted in the try{} portion and the disposal of the object containing the resource is performed in the finally{} portion by calling the object's Dispose method which is accessed via the IDisposable interface, provided that the resource is not null which would result in a run-time error since in that case there would be no object on which to call a Dispose method.
3. What does it mean to you when I say strings are immutable?
In .NET all variables of type string are immutable, or unchangeable, meaning that once the variable has been assigned a value, you can never actually change its value. This is due to the fact that the string datatype in .NET is actually a reference type which is a pointer to a memory location containing the contents of the string and then allocated in the heap until the variable comes into scope and the pointer therein is pushed onto the stack. So when you try to assign a new value to a string variable that already has been assigned an initial value, a new memory location is actually allocated in the background and the pointer to that new memory location is merely copied to our string variable which, in the foreground, appears as if the actual value of the variable has been changed. This characteristic can cause misuse and confusion by developers who are used to other languages in which operators such as the concatenation (+) operator can be used on a string variable directly. Hence in .NET the preferred (if not downright mandatory) way to essentially achieve string mutability is through the use of the System.Text.StringBuilder, which is actually not a string but a class containing a collection of character data along with methods that can perform mutable operations (concatenations, manipulations, etc.) on said character data collection and that can ultimately be finally converted into an actual immutable string type by using Object.ToString() on the instantiated StringBuilder object.
4. In C# in the Task Parallel Library, what is a Task?
In the TPL a Task is a class that when instantiated becomes a lightweight object that incurs minimal overhead by, instead of spawning individual threads that have their own overhead and initialization latencies and requirements for exception handling and propagation, utilizes the CLR's ThreadPool class (which can also be used manually using the ThreadPool.QueueUserWorkItem method directly but since .NET 4.0 the entire ThreadPool class has been overhauled to be specifically optimized for maximum efficiency when used intrinsically by Tasks. Tasks were designed for leveraging multi-core processors to efficiently manage parallelizable units of work (in fact the powerful Parallel class is directly based on the concepts of task parallelism) by containing powerful features such as tuning of a task's scheduling, starting of tasks within tasks to create parent/child task relationships that allow for such things as implementing cooperative cancellation between tasks, waiting on a whole set of tasks to complete without the need for signaling constructs such as delegates or heaven forbid, old-school CPU-intensive techniques like polling loops for thread results LOL), attaching of "continuing tasks" to be automatically started upon completion of one or more antecedent tasks, and automatic propagation of task exceptions to parents, continuations and actual task consumers.
5. What is the difference between a Mutex and a Semaphore and give an example of where you would use each.
The major difference between a Mutex and Semaphore is that a Mutex ensures that one and only one thread can access a resource (or section of code) at a time whereas a Semaphore establishes a maximum number of concurrent threads that are allowed to simultaneously access a resource by basically maintaining a queue of threads to enforce concurrency in an ordered fashion. Another important difference is that Mutexes, like simple locks, can only be released by the same thread that obtained the lock in the first place, whereas Semaphores have no owner; i.e., are "thread-agnostic", such that any thread can call Release on a semaphore regardless of which other thread may have obtained it initially. And while Mutexes and Semaphores are similar in the respect that both are thread-locking constructs that can be cross-process friendly, allowing them to work computer-wide as well as application-wide, Semaphores must be named in order to span processes in the same way that Mutexes can intrinsically. An example of a classic use for a Mutex would be to leverage its computer-wide synchronization and locking mechanisms to prevent more than one instance of an application from being allowed to be executed at the same time. An example of an appropriate use of Semaphores would be to implement a simple lightweight message-queueing data structure that could be easily used in situations in which multiple threads within a single application need access to the same message queue but where a full-blown MSMQ implementation would be overkill in terms of not only resource overhead but also would perform way too slowly to be practically used in real-time distributed applications such as those that may require, say, socket-level reading of UDP messages that each might require processing in a separate thread ASAP.
So that was my best attempt late at night on these; I welcome any critiques/corrections/comments/complaints/insults, etc., from anyone who has the time to wade through my rather verbose answers... Please be as brutal as necessary - I aint' skeered, just want to always keep learning and you guys are the best!
Thanks in advance CPians! Cheers
"... having only that moment finished a vigorous game of Wiff-Waff and eaten a tartiflet." - Henry Minute
"Let's face it, after Monday and Tuesday, even the calendar says WTF!" - gavindon
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning. - gavindon
|
|
|
|
|
The length and breadth of your answers are an example of why "Interview Question" articles are a complete waste of time. Nice job.
|
|
|
|
|
OK I guess I deserved that, should have known better... I was just hoping that someone could quickly assess whether or not the type of answers that I gave would even be considered in the ballpark as far as length and breadth, not regarding posting guidelines on CP, but for providing written answers to stupid interview questions in general.
Sorry for any mental and emotional distress that I may have caused you and yours by not following the official proper etiquette, protocol, decorum, policy and/or procedure in my failed attempt to reach out to our community, and also for representing everything soulless and wrong.
I shall now go place my head in a vice and begin turning the crank. Is there a recommended area of CP that might have some advice on how best to do this? Perhaps with enough searching I can find an Arduino article on wiring up servomotors to vice cranks so that I can automate the process...
"... having only that moment finished a vigorous game of Wiff-Waff and eaten a tartiflet." - Henry Minute
"Let's face it, after Monday and Tuesday, even the calendar says WTF!" - gavindon
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning. - gavindon
|
|
|
|
|
Deserve what? I was complimenting you on the accuracy and completeness of your answers.
There are too many "Interview Question" articles here and all over the web that are written by idiots who think that's a good way to help someone get a job. They all suck because none of them go into the detail and understanding required to give the kind of answers that you gave.
|
|
|
|
|
Very cool man... I was so ready for bad news that I read your answer wrong. Thank you so much for your compliments - very much appreciated today... I had a gut reaction that I had nailed the questions but it's been a little while since I've written so technically and I was proud of myself that all of that just kinda flowed out of me.
You made my day; good end to a day full of productive job hunting and networking for once! I think I may be finally starting to get the hang of this after 23 years in the biz...
Thanks Dave! Cheers!
"... having only that moment finished a vigorous game of Wiff-Waff and eaten a tartiflet." - Henry Minute
"Let's face it, after Monday and Tuesday, even the calendar says WTF!" - gavindon
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning. - gavindon
|
|
|
|
|
OK so here is a concise question that really drills-in on what I wanted to know in the first place and hopefully it won't be TLDR for anyone:
Did I get the damn job or not?
"... having only that moment finished a vigorous game of Wiff-Waff and eaten a tartiflet." - Henry Minute
"Let's face it, after Monday and Tuesday, even the calendar says WTF!" - gavindon
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning. - gavindon
|
|
|
|
|
Based on most of the people that I've had the displeasure of interviewing, you're in the top 5 to move on to the next round.
|
|
|
|
|