{"id":63483,"date":"2022-01-07T02:43:00","date_gmt":"2022-01-07T08:43:00","guid":{"rendered":"https:\/\/www.scalahosting.com\/blog\/?p=63483"},"modified":"2026-01-13T09:52:11","modified_gmt":"2026-01-13T15:52:11","slug":"how-does-wordpress-hash-passwords","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/blog\/how-does-wordpress-hash-passwords\/","title":{"rendered":"How Does WordPress Hash Passwords?"},"content":{"rendered":"\n<p>Website owners love WordPress. So much so that <strong>around 40%<\/strong> of them have picked it as the basis for their online projects. Yet, you might be surprised to find that some people are not too sure about how the world&#8217;s most popular <a href=\"https:\/\/www.scalahosting.com\/blog\/what-is-a-content-management-system\/\"><strong>Content Management System<\/strong><\/a> (CMS) works.<\/p>\n\n\n\n<p>Perhaps more worryingly, they&#8217;re concerned about some aspects of WP&#8217;s security, more specifically, the mechanism for <strong>hashing users&#8217; passwords<\/strong>. Let&#8217;s explore the area in more detail and see if the criticism is founded.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920.jpg\"><img decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920-1024x683.jpg\" alt=\"How Does WordPress Hash Passwords?\" class=\"wp-image-63486\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920-1024x683.jpg 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920-300x200.jpg 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920-768x512.jpg 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920-1536x1024.jpg 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/registration-3938434_1920.jpg 1920w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-default\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what\"><strong>What is Hashing?<\/strong><\/h2>\n\n\n\n<p>As a website owner, it&#8217;s your responsibility to protect your users&#8217; data from hackers. <strong>Storing their passwords<\/strong> is an important part of this.<\/p>\n\n\n\n<p>Imagine that hackers manage to break through your defenses and steal your website&#8217;s database. It&#8217;s already a nightmare scenario as, depending on the type of service you offer, your database may be <strong>full of sensitive information<\/strong>.<\/p>\n\n\n\n<p>However, it could get a lot worse. If you store users&#8217; passwords in <strong>plain text<\/strong>, there&#8217;s absolutely nothing to stop the hackers from exploiting them.<\/p>\n\n\n\n<p>We all know that people reuse <strong>the same passwords on multiple different accounts<\/strong>. If criminals decide to try the stolen credentials against other online services, they are more than likely to successfully break in. A single breach could lead to the compromise of tons of data.<\/p>\n\n\n\n<p>The purpose of hashing is to contain all this. Hashing is <strong>a cryptographic function<\/strong> that turns text into a scrambled string of letters and numbers called a hash.<\/p>\n\n\n\n<p>When a user picks a password, the web application passes it through the <strong>hashing function<\/strong> before storing the resulting hash in the database.<\/p>\n\n\n\n<p>The next time the user tries to log in, the password they enter goes through the same mechanism, and the hash is compared to <strong>what is stored in the database<\/strong>. If it matches, the system lets the user in. If it doesn&#8217;t, the website returns an error.<\/p>\n\n\n\n<p>There are online generators that can illustrate what a WordPress password hash looks like. Below you can see the hash of &#8220;Password123!#&#8221; according to <a href=\"https:\/\/codebeautify.org\/wordpress-password-hash-generator\" rel=\"nofollow\">Code Beautify&#8217;s generator<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing.png\"><img decoding=\"async\" width=\"1024\" height=\"220\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1024x220.png\" alt=\"How Does WordPress Hash Passwords?, What is Hashing?\" class=\"wp-image-63487\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1024x220.png 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-300x64.png 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-768x165.png 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1536x330.png 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing.png 1898w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<p>The crucial thing about hashing is that it&#8217;s <strong>a one-way function<\/strong>. In theory, it should be <strong>impossible to reverse the process and derive the plain text password from the hash<\/strong>.<\/p>\n\n\n\n<p>However, as is often the case, theory and reality don&#8217;t match.<\/p>\n\n\n\n<p>There are many different hashing algorithms, with some offering better security than others. As hardware evolves, hackers&#8217; <strong>brute-force attacks become more and more powerful<\/strong>, and we&#8217;ve reached the point where only a handful of algorithms are considered strong enough to properly protect users&#8217; passwords.<\/p>\n\n\n\n<p>You may need some help to understand how much stronger some hashing mechanisms are than others. To illustrate the differences, experts like <a href=\"https:\/\/www.linkedin.com\/in\/jgosney\"><strong>Jeremi Gosney<\/strong><\/a> often simulate various attacks against popular hashing algorithms and share the results during events dedicated to password security.<\/p>\n\n\n\n<p>In 2012, Gosney used a cluster of GPUs to launch a brute-force attack against simple implementations of several hashing algorithms. We&#8217;ll now summarize the results for three of the most popular mechanisms.<\/p>\n\n\n\n<p>During an attack on <strong>the MD5 algorithm<\/strong>, Gosney managed to make <strong>180 billion guesses per second<\/strong>. With this, he would successfully guess all possible 8-character passwords in <strong>a little over 9 hours<\/strong>.<\/p>\n\n\n\n<p>When attacking <strong>SHA1<\/strong>, Gosney was making <strong>around 61 billion guesses per second<\/strong>, which would have allowed him to successfully guess all 8-character passwords in <strong>approximately 27 hours<\/strong>.<\/p>\n\n\n\n<p>When attacking <strong>bcrypt<\/strong>, he only managed <strong>71 thousand guesses per second<\/strong>, meaning it would take him <strong>in the region of 2,700 years<\/strong> to successfully guess all possible 8-character passwords.<\/p>\n\n\n\n<p>The figures above were recorded with GPUs that are about ten years old now. Modern hardware is much more powerful and can enable even faster brute-force attacks. However, Gosney&#8217;s results are as good as ever at illustrating <strong>the difference between algorithms like MD5 and bcrypt<\/strong>.<\/p>\n\n\n\n<p>You&#8217;d think that WordPress, the world&#8217;s most popular CMS, would use one of the more difficult to crack algorithms. You may be in for a surprise.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-scaled.jpg\"><img decoding=\"async\" width=\"1024\" height=\"739\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-1024x739.jpg\" alt=\"How Does WordPress Hash Passwords?, What is Hashing? 2\" class=\"wp-image-63488\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-1024x739.jpg 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-300x217.jpg 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-768x554.jpg 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-1536x1109.jpg 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-lewis-kang_ethe-ngugi-289927-2048x1478.jpg 2048w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"type\"><strong>What Type of Hashing Does WordPress Use?<\/strong><\/h2>\n\n\n\n<p>WordPress initially had <strong>a straightforward implementation of the MD5 hashing algorithm<\/strong>. MD5 has one distinct advantage over many of its competitors \u2013 it&#8217;s extremely quick. However, even way back in 2007, collision attacks against the<strong><em> MD5 hashes took no longer than a few seconds <\/em><\/strong>on a regular PC. Needless to say, at the time, WP&#8217;s development team was getting a lot of stick for using the algorithm.<\/p>\n\n\n\n<p>Released in 2008, WordPress 2.5 came with <strong>PHPass<\/strong> (pronounced P-H-Pass). PHPass is a hashing framework that supports several hashing algorithms, including MD5 and <strong>bcrypt<\/strong>. As we established in the previous section, <strong>bcrypt is much stronger than MD5<\/strong>, and it&#8217;s widely considered <strong>the best hashing algorithm for PHP applications<\/strong>.<\/p>\n\n\n\n<p>However, WP&#8217;s implementation of PHPass <strong>continues to use MD5 to this day<\/strong>. At this point, we need to emphasize the fact that despite being based on MD5, <strong>WordPress&#8217;s hashing mechanism provides more than adequate security<\/strong>.<\/p>\n\n\n\n<p>PHPass adds <strong>cryptographic salts<\/strong> to every single password before hashing it. A salt is a unique piece of data attached to the plain text password before the hashing mechanism is used. Thanks to it, identical passwords don&#8217;t result in identical hashes, and the hackers have a much harder time guessing what the user has picked as a password.<\/p>\n\n\n\n<p>Additionally, PHPass makes eight passes of MD5-based hashing and employs <strong>key and password stretching techniques<\/strong> that further protect the credentials.<\/p>\n\n\n\n<p>As a result of all this, <strong>brute-force attacks against WordPress&#8217;s hashing mechanism are impractical<\/strong>. For now, that is.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-scaled.jpg\"><img decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-1024x768.jpg\" alt=\"How Does WordPress Hash Passwords?, What Type of Hashing Does WordPress Use?\" class=\"wp-image-63489\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-1024x768.jpg 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-300x225.jpg 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-768x576.jpg 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-1536x1152.jpg 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-207580-2048x1536.jpg 2048w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why\"><strong>Why Does WordPress Continue to Use MD5?<\/strong><\/h2>\n\n\n\n<p>Rewind the tape a bit, and you&#8217;ll see that implementing a strong hashing algorithm into a PHP project wasn&#8217;t exactly a walk in the park. However, <strong>PHP 5.5 introduced official support for bcrypt<\/strong>, with native functions for both hashing passwords and verifying them during login attempts.<\/p>\n\n\n\n<p>WordPress&#8217;s hashing mechanism does offer sufficient security at this time. Still, many people argue that keeping it as it is makes no sense given the <strong>availability of stronger algorithms <\/strong>that can be implemented without too much hassle.<\/p>\n\n\n\n<p>Yet, WordPress&#8217;s development team seems strangely reluctant to make any changes to this particular part of the core. The reason for this is <strong>backward compatibility<\/strong>.<\/p>\n\n\n\n<p>WordPress maintains its popularity and continues to grow its market share not only because it&#8217;s incredibly versatile and easy to use but also because <strong>it will run on just about any hosting platform<\/strong>. Far too many people use legacy systems to build new projects, and many existing websites run in <strong>woefully outdated hosting environments<\/strong>.<\/p>\n\n\n\n<p>The old software makes these projects sitting ducks for the hackers, so WP&#8217;s hashing mechanism is likely the least of their worries, especially considering the decent security it offers. The CMS&#8217;s developers know that <strong>changing the hashing mechanism could impact quite a few projects<\/strong>, and they prefer not to do it.<\/p>\n\n\n\n<p>It&#8217;s an illustration of an &#8220;<em>if it&#8217;s not broken, don&#8217;t fix it<\/em>&#8221; strategy, and you have to agree that, especially in light of the enormous number of people that can be affected, there is some logic behind it.<\/p>\n\n\n\n<p>However, many website owners consider security the highest priority in organizing <strong>every single aspect of their projects<\/strong>. For them, using a hashing mechanism based on an algorithm as weak as MD5 just isn&#8217;t good enough.<\/p>\n\n\n\n<p>Luckily for them, there are alternatives.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557.jpg\"><img decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557-1024x682.jpg\" alt=\"How Does WordPress Hash Passwords?, Why Does WordPress Continue to Use MD5?\" class=\"wp-image-63490\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557-1024x682.jpg 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557-300x200.jpg 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557-768x511.jpg 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557-1536x1023.jpg 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/pexels-pixabay-270557-2048x1364.jpg 2048w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"plugins\"><strong>Change Your WordPress Website&#8217;s Hashing Algorithm With a Plugin<\/strong><\/h2>\n\n\n\n<p>Thanks to <strong>WP&#8217;s modular architecture<\/strong>, you can easily change your website&#8217;s password storage system.<\/p>\n\n\n\n<p>Search for &#8220;bcrypt&#8221; on WP&#8217;s official plugin directory, and you&#8217;ll find quite a few matches. Installing them is a standard, two-click job, and pretty much all of them promise to <strong>make the switch from MD5 to bcrypt without telling all users to reset their passwords<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1.png\"><img decoding=\"async\" width=\"1024\" height=\"504\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1-1024x504.png\" alt=\"How Does WordPress Hash Passwords?, Change Your WordPress Website&#8217;s Hashing Algorithm With a Plugin\" class=\"wp-image-63491\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1-1024x504.png 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1-300x148.png 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1-768x378.png 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1-1536x756.png 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-1.png 1903w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"https:\/\/roots.io\/\" rel=\"nofollow\">Roots.io<\/a>, a company creating various <strong>WordPress development tools<\/strong>, also has a plugin that enables you to use bcrypt. However, it&#8217;s not available on the official directory, so the process of installing it is different. Let&#8217;s follow the steps.<\/p>\n\n\n\n<p><strong>1. Download the plugin from GitHub.<\/strong><\/p>\n\n\n\n<p>Roots&#8217;s plugin is available <a href=\"https:\/\/github.com\/roots\/wp-password-bcrypt\">here<\/a>. To download it, click <strong>Code<\/strong> and then select <strong>Download ZIP<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-2.png\"><img decoding=\"async\" width=\"433\" height=\"322\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-2.png\" alt=\"How Does WordPress Hash Passwords?, Change Your WordPress Website&#8217;s Hashing Algorithm With a Plugin 2\" class=\"wp-image-63492\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-2.png 433w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-2-300x223.png 300w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<p>After saving the file on your computer, you need to extract the archive.<\/p>\n\n\n\n<p><strong>2. Create a new directory inside the wp-content folder.<\/strong><\/p>\n\n\n\n<p>The plugin created by Roots requires the creation of <strong>a folder named &#8220;mu-plugins&#8221; inside the &#8220;wp-content&#8221; directory<\/strong>. You can do it via SSH, through the file manager in your web hosting control panel, or via your favorite FTP client.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-3.png\"><img decoding=\"async\" width=\"747\" height=\"597\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-3.png\" alt=\"How Does WordPress Hash Passwords?, Change Your WordPress Website&#8217;s Hashing Algorithm With a Plugin 3\" class=\"wp-image-63493\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-3.png 747w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-3-300x240.png 300w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<p><strong>3. Upload the wp-password-bcrypt.php file.<\/strong><\/p>\n\n\n\n<p>To install and activate the plugin, upload the &#8220;wp-password-bcrypt.php&#8221; file to the &#8220;mu-plugins&#8221; folder.<\/p>\n\n\n\n<p class=\"alert-blue\"><strong>NOTE: You don&#8217;t need to upload the entire contents of the archive. Only the PHP file is required.<\/strong><\/p>\n\n\n\n<p>The plugin will appear in the <strong>Plugins <\/strong>&gt; <strong>Installed Plugins<\/strong> menu under the <strong>Must-Use<\/strong> tab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><a href=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4.png\"><img decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4-1024x500.png\" alt=\"How Does WordPress Hash Passwords?, Change Your WordPress Website&#8217;s Hashing Algorithm With a Plugin 4\" class=\"wp-image-63494\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4-1024x500.png 1024w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4-300x146.png 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4-768x375.png 768w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4-1536x750.png 1536w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2022\/01\/wordpress-hashing-4.png 1920w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/a><\/figure>\n\n\n\n<p>Because Roots.io&#8217;s add-on is one of the so-called must-use plugins, it&#8217;s automatically activated upon installation, and users can&#8217;t deactivate it from the WordPress dashboard.<\/p>\n\n\n\n<p>The only way to get rid of it is to remove it from the mu-plugins directory, so it&#8217;s a good idea to use it if multiple people have access to the <a href=\"https:\/\/www.scalahosting.com\/blog\/navigating-your-wordpress-dashboard\/\"><strong>WP dashboard<\/strong><\/a> and you want to make sure they don&#8217;t meddle with the website&#8217;s password hashing mechanism.<\/p>\n\n\n\n<p><strong>All bcrypt WP add-ons work in the background<\/strong>, and you can&#8217;t really expect any different features or functions. However, there are differences in the way the plugins tackle the problem.<\/p>\n\n\n\n<p>Some employ <strong>the native PHP functions<\/strong> to hash and verify the passwords, and others <strong>re-configure the PHPass framework<\/strong> to use bcrypt instead of MD5. In all cases, you&#8217;ll need<strong> <\/strong><a href=\"https:\/\/www.scalahosting.com\/kb\/how-to-change-the-php-version-of-my-account\/\"><strong>PHP version<\/strong><\/a><strong> 5.5 or newer<\/strong>, which you should be using anyway.<\/p>\n\n\n\n<p>The choice of a plugin comes down to personal preference. If they all look the same to you, be sure to read the reviews and see what people who have used them think.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>Although WP&#8217;s password storage system isn&#8217;t based on the most secure hashing algorithm currently available, there&#8217;s <strong>no immediate threat to the security of your website and its visitors<\/strong>.<\/p>\n\n\n\n<p>However, WP&#8217;s modular architecture and the global community that keeps the project alive means that employing a more<strong> sophisticated password hashing algorithm<\/strong> is something you can do with as little as a couple of mouse clicks.<\/p>\n\n\n\n<p>You won&#8217;t be wrong in saying that the same architecture and the community make WordPress the most popular website-building application in the world.<\/p>\n\n\n<div class=\"shortcode-cta-new-wrap row wordpress\">\r\n    <img decoding=\"async\" class=\"shortcode-logo\" src=\"\/blog\/images\/shortcode-bg-new-logo-wordpress.svg\" alt=\"shortcode-logo\" title=\"shortcode-logo\"\/>\r\n    <div class=\"shortcode-cta-img col-10 col-sm-7 col-md-5\">\r\n        <img decoding=\"async\" class=\"shortcode-bg\" src=\"\/blog\/images\/shortcode-bg-new-wordpress.webp\" alt=\"shortcode-bg\" title=\"shortcode-bg\"\/>\r\n    <\/div>\r\n    <div class=\"shortcode-cta-content col-12 col-md-7\">\r\n        <div class=\"content\">\r\n            <div class=\"heading\">Take your WordPress site to new Heights - Join the ScalaHosting Family<\/div>\r\n            <div class=\"list-wrap\">\r\n                <div class=\"list\">\r\n                    <div><b>Free, Effortless & No-Downtime Migration<\/b><\/div>\r\n                    <div><b>Anytime Unconditional Money-back Guarantee<\/b><\/div>\r\n                    <div><b>Constant, fast and competent WordPress Support<\/b><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"btn-wrap row\">\r\n                <div class=\"col-auto\">\r\n                    <a class=\"button green\" href=\"https:\/\/www.scalahosting.com\/fastest-wordpress-hosting.html\">Start Now<\/a>\r\n                <\/div>\r\n                <div class=\"col-auto\">\r\n                    <button class=\"button green_outer\" title=\"Contact Sales\" onclick=\"chatChangeVisibility(this, 'maximize', {}, 5);\">Chat with our Experts<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-are-user-passwords-stored-in-wordpress\"><strong>How are user passwords stored in WordPress?<\/strong><\/h3>\n\n\n\n<p>After a visitor picks a password, <strong>WordPress hashes it before storing it in your website&#8217;s MySQL <\/strong>database. During a login attempt, the CMS uses the same algorithm on the password the user has entered and compares the resulting hash to what is stored in the database. If there&#8217;s a match, the user will successfully log in.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-does-hashing-works\"><strong>How does hashing works?<\/strong><\/h3>\n\n\n\n<p><strong>Hashing is a cryptographic function<\/strong> that turns your password (or another piece of data) from a <strong>human-readable format<\/strong> into a string of letters and numbers that bear no visual resemblance to the original. Hashing was conceived as a one-way function, so unlike encryption, there&#8217;s no key that can decrypt the hash and return the plain-text password. However, some weaker hashing algorithms are susceptible to brute-force attacks, and hackers can reverse them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"is-it-possible-to-decrypt-passwords-hashed-by-wordpress\"><strong>Is it possible to decrypt passwords hashed by WordPress?<\/strong><\/h3>\n\n\n\n<p>WordPress uses the PHPass framework, which salts the <strong>passwords before performing eight passes of MD5-based hashing<\/strong>. Alongside this, there are other techniques that further protect the data.<\/p>\n\n\n\n<p>As a result, although it&#8217;s based on MD5, an inherently weak algorithm, mounting a successful attack against WP&#8217;s hashing system is not really practical at the time of writing.<\/p>\n\n\n\n<p><script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"How are user passwords stored in WordPress?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"After a visitor picks a password, WordPress hashes it before storing it in your website's MySQL database. During a login attempt, the CMS uses the same algorithm on the password the user has entered and compares the resulting hash to what is stored in the database. If there's a match, the user will successfully log in.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"How does hashing works?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Hashing is a cryptographic function that turns your password (or another piece of data) from a human-readable format into a string of letters and numbers that bear no visual resemblance to the original. Hashing was conceived as a one-way function, so unlike encryption, there's no key that can decrypt the hash and return the plain-text password. However, some weaker hashing algorithms are susceptible to brute-force attacks, and hackers can reverse them.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Is it possible to decrypt passwords hashed by WordPress?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"WordPress uses the PHPass framework, which salts the passwords before performing eight passes of MD5-based hashing. Alongside this, there are other techniques that further protect the data. As a result, although it's based on MD5, an inherently weak algorithm, mounting a successful attack against WP's hashing system is not really practical at the time of writing.\"\n        }\n      }]\n    }<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Website owners love WordPress. So much so that around 40% of them have picked it as the basis for their &#8230;<\/p>\n","protected":false},"author":113,"featured_media":63495,"comment_status":"open","ping_status":"closed","sticky":false,"template":"single-cluster-wp.php","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_analysis_target_kw":"","footnotes":""},"categories":[39],"tags":[],"class_list":["post-63483","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress-hosting"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/63483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/comments?post=63483"}],"version-history":[{"count":9,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/63483\/revisions"}],"predecessor-version":[{"id":73671,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/63483\/revisions\/73671"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/media\/63495"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/media?parent=63483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/categories?post=63483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/tags?post=63483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}