I want check if my various passwords are in lists of cracked passwords, but I don't want to type the passwords online. For example, I'd rather scroll through an ordered list of passwords that have been merged from all rainbow tables and other sources to see if my favorite passwords are in there. I don't want to use a search engine because doing would require that I type in my passwords, thus revealing them to the site operator or middlemen. I could download all the rainbow tables, one by one, and search through them on my computer, but that's a lot of work.
Note: if you use an online hash generator, they will automatically store your plaintext and hash pair in their database if it is not already there. This is why you hash before just in case they don't have that pair.
If you're a sysadmin or an auditor, and you want to use leaked lists and and dictionaries to check the strength of people's passwords prior to acceptance, that is a sound idea. Projects like zxcvbn that provide a password blacklist, plus a length requirement, provide at least a cursory assurance of strength.
But if, as it sounds, you are asking this question in order to verify the strength of your own personal password, then you should reconsider. If you're generating the password in a sound way, then you should already know how hard it is to crack.
If you select a strong password (say, 15 random characters or more) or a strong passphrase (5 or more random words from a sufficiently long dictionary of 10K or more), then the strength of that password relies solely on the pure math of how many combinations are possible, and you know that the likelihood of it appearing in any list is very, very low.
But if your password is 'JellyfishVacation2014", or a keyboard pattern, or your childhood address backwards, or any of the hundreds of different psychologies of non-random human password selection ... then even if your specific password doesn't appear in a giant dictionary, it is still weak enough to fall to offline bruteforce and hybrid password-guessing attacks. The password crackers know all of these human selection processes. When hundreds of millions of accounts are leaked yearly, the likelihood that your "favorite" password method is unique is very low.
In other words, Kerkhoffs' Principle applies to password selection methodology. If you might be reluctant to share exactly how you generated your password, then you should switch to a different method.
Anyway, there is this site, respected, where you can enter an email address to check the status of the user ID or actually enter a password in the same field to see if it has shown up in a previously used hack.
Not quite what you want, but this is, from the same site, which also has some code samples out already or easy enough to code if you like it. Also now used by 1Password.com so you can check your passwords through the web portal, for example (there are others: ).
Someone "looking" at the data going back and forth 1) can't be sure your password really is 2) Can't be sure what your password hash really is, and 3) no idea who you are or what username it is associated with.
The only option would be to locally download a copy of the most used dictionaries and start trying to do a find for your common passwords. But this is already an indication that your password is not strong enough if you even think this is something you need to do. Not to mention that a lot of attackers have lists that aren't available online; they are customized or were stolen in some of their own attacks.
The proper action is to use a password manager with a truly unique and randomly generated password for each site you use. This prevents someone from getting your password through brute-force, password leakage, weak hashing on a bad website and, most importantly, prevents someone from generating a unique wordlist targeting you personally.
LinkedIn and 3rd parties use essential and non-essential cookies to provide, secure, analyze and improve our Services, and to show you relevant ads (including professional and job ads) on and off LinkedIn. Learn more in our Cookie Policy.
Every weekend I like to do a little coding project just for the sheer fun of it. It is always something different but I have a few rules: it must be something that can be done in a few hours and it has to be interesting in its own matter. This past weekend I decided to code a little toy project: a password cracker, In this article I share what motivated me and what kind of lessons we can learn even from such a simple experiment.
If you are not yet using multifactor authentication (MFA) in every service requiring authentication, you should. I already shared some thoughts on why passwords combined with human convenience are an explosive combination. But convenience is something way more powerful than we would like to admit.
A few weeks ago, I was at a Starbucks store close to where I work. There was a girl right in front of me waiting to be served. The space was a little small, so we shared a very small area. She picked up her phone and typed "000000" to unlock it. I was so close I couldn't avoid noticing. She looked at me as an afterthought and said: "Ah... I don't care... I don't even like having to use passwords at all." It was when the attendant asked what the girl wanted. She voiced her order together with her name and Starbucks employee number. In a short amount of time, that girl let a stranger know her phone's password, name, workplace, and employee number.
When you create an account on a website defining your username and password, your password will not be stored in the website's database. Instead, the website holds a hash value of your password using some secure hash algorithm.
According to NIST SP 800-107, a hash algorithm is a "function that maps a bit string of arbitrary length to a fixed-length bit string." This "bit string" is the input of that function, and it can be any digital data: texts, Word and PDF documents, videos, pictures, software, etc. The "fixed-length bit string" is the output of the referred function, and it is called a message digest or hash output or yet hash value. The hash algorithm must satisfy some properties to be considered approved by NIST, which are:
These hash values have a large enough length to discourage brute-force attacks. As an example, the Advanced Encryption Standard (AES) can work with 128-bit keys. Now let's say that we have a ciphertext encrypted with AES, and we want to brute-force all possible 128-bit keys in the attempt of finding the correct plaintext. The time required for such a task would be more than the universe's age, which is 13.77 billion years. Most of the current hash algorithms generate hash values from 160 bits to 512 bits of length. This seems discouraging enough for any brute-force attempt.
Therefore, NIST-approved hash algorithms are considered secure to be used in critical settings. Indeed, hash algorithms are commonly used for storing the hash value of passwords. So when you type your username and password, the application responsible for your authentication will look for the hash value associated with your username. Then the application will compute the hash value of the password you just informed and compare it with the hash value stored in their database. From a 30,000 foot-view, this is basically how password-based authentication works.
But how are passwords cracked then? Attackers will always target the weak link, which is a weak password. Attackers know that most users will put convenience first, even if it compromises security. Therefore, the space to exhaustively try all possibilities can be small depending on the password preferences of their victims.
Weak passwords are some combination of the opposite of the above recommendations. They are often short; there is not a great mix of character types. They are usually derived from information associated with the user and/or the application, and they are used in many applications at once.
Weak passwords are popular! A study in 2021 by NordPass in partnership with several independent researchers evaluating four terabytes of data in 50 countries revealed the top 200 most commonly used passwords. Here is just the top 10:
The fact that "password" is the top 5 in the list - in 2021! - is beyond belief. By the way, "000000", the password of our Starbucks' girl, ranked in the 12th position. The entire list is a collection of trivial choices that scream "convenience!" Just like that girl in that coffee shop, many people might set up a password just because they had to. They are doing the minimum to satisfy the requirements they were presented to without really understanding the implications of their actions.
One legitimate question you could ask now would be: "How can anyone get access to the hash value of my password? Isn't that securely stored in each application I use?" The answer is yes and no. Ideally, any secret information used for authenticating users should never come to public knowledge. Still, in reality, there have been a significant number of occurrences throughout recent years through each user data leaked and could be used as part of many cyberattacks.
7fc3f7cf58