{"id":2460,"date":"2014-06-30T16:05:35","date_gmt":"2014-06-30T20:05:35","guid":{"rendered":"http:\/\/sqlity.net\/en\/?p=2460"},"modified":"2015-09-09T16:25:05","modified_gmt":"2015-09-09T20:25:05","slug":"sql-password-hash","status":"publish","type":"post","link":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/","title":{"rendered":"Hash Algorithms &#8211; How does SQL Server store Passwords?"},"content":{"rendered":"<div>\n<h3>Introduction<\/h3>\n<p>\nI am often asked how SQL Server protects the passwords for SQL Logins. We know already that the passwords are hashed and that the hashed value can be queried using the <a href=\"http:\/\/sqlity.net\/en\/2327\/sys-sql_logins\/\"><span class=\"tt\">sys.sql_logins<\/span> catalog view<\/a>. But, how is this value actually calculated? How do you get from a password to its hash?\n<\/p>\n<h3>SHA_512 with Salt<\/h3>\n<p>\nSince SQL Server 2012, passwords are stored using the <a href=\"http:\/\/csrc.nist.gov\/publications\/fips\/fips180-4\/fips-180-4.pdf\" target=\"_blank\">SHA_512 hashing algorithm<\/a> with a 32-bit <a href=\"http:\/\/sqlity.net\/en\/2309\/salt\/\">salt<\/a>.\n<\/p>\n<p>\nSHA_512 is twelve years old and it is starting to show a few signs of ageing. All SHA algorithms are based on multiple rounds. While there has not been a successful attack against the full number of rounds (80), the number of rounds that can be broken is rising. Now, in a real application, you would always use all 80 rounds, and if you do, the algorithm is still secure. However, the rising number of broken rounds means that it likely will be broken within the next few years.\n<\/p>\n<p><!--AD--><\/p>\n<div style=\"margin: 50px 0;\"><a href=\"http:\/\/sqlity.net\/lp-service-account\" target=\"_blank\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"983\" height=\"362\" class=\"aligncenter size-full wp-image-2893\" src=\"http:\/\/sqlity.net\/wp-content\/uploads\/2014\/01\/Secrets_To_Selecting_The_Correct_SQL_Server_Service_Account_Video.jpg\" alt=\"Secrets To Selecting The Correct SQL Server Service Account Video\" srcset=\"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/01\/Secrets_To_Selecting_The_Correct_SQL_Server_Service_Account_Video.jpg 983w, https:\/\/sqlity.net\/wp-content\/uploads\/2014\/01\/Secrets_To_Selecting_The_Correct_SQL_Server_Service_Account_Video-300x110.jpg 300w, https:\/\/sqlity.net\/wp-content\/uploads\/2014\/01\/Secrets_To_Selecting_The_Correct_SQL_Server_Service_Account_Video-150x55.jpg 150w\" sizes=\"auto, (max-width: 983px) 100vw, 983px\" \/><\/a>\n<\/div>\n<p><!--\/AD--><\/p>\n<h3>Calculating the Hash Value<\/h3>\n<p>\nThe first step to calculate the hash value is to convert the password from <span class=\"tt\">NVARCHAR<\/span> to <span class=\"tt\">VARBINARY<\/span>. Afterwards SQL Server uses a <a href=\"http:\/\/sqlity.net\/en\/2209\/pseudo-random\/\">CSPRNG<\/a> to generate the 32-bit Salt and append it to the converted password. Of this new concatenated <span class=\"tt\">VARBINARY<\/span> value SQL Server calculates the SHA_512 hash. The last step is to concatenate <span class=\"tt\">0x0200<\/span>, the salt and the calculated hash together to build the stored hash value.<br \/>\nThe code below demonstrates this calculation:\n<\/p>\n<div>\n[sql]\nDECLARE @pswd NVARCHAR(MAX) = 'APassword';<br \/>\nDECLARE @salt VARBINARY(4) = CRYPT_GEN_RANDOM(4);<br \/>\nDECLARE @hash VARBINARY(MAX);<br \/>\nSET @hash = 0x0200 + @salt + HASHBYTES('SHA2_512', CAST(@pswd AS VARBINARY(MAX)) + @salt);<\/p>\n<p>SELECT @hash AS HashValue, PWDCOMPARE(@pswd,@hash) AS IsPasswordHash;<br \/>\n[\/sql]\n<\/p><\/div>\n<p>\nWe can use the <a href=\"http:\/\/sqlity.net\/en\/2455\/pwdcompare\/\"><span class=\"tt\">PWDCOMPARE<\/span> function<\/a> to confirm that our result is indeed a valid SQL Server password hash:\n<\/p>\n<p>\n<a href=\"http:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg\" alt=\"Calculating the SQL Server SQL login Password Hash\" title=\"Calculating the SQL Server SQL login Password Hash\" width=\"768\" height=\"468\" class=\"aligncenter size-full wp-image-2461\" srcset=\"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg 768w, https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation-300x182.jpg 300w, https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation-150x91.jpg 150w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a>\n<\/p>\n<h3>Other SQL Server Versions<\/h3>\n<p>\nSQL Server versions before SQL Server 2012 used a very similar algorithm. The only difference is that instead of SHA_512, SHA1 was used. The first two bytes of the hash value are a version indicator. For SHA1 hashes, this version number is set to <span class=\"tt\">0x0100<\/span>. If you upgrade a server from an old version to 2012 or later, the stored passwords are not automatically upgraded. Therefore the <span class=\"tt\">PWDCOMPARE<\/span> function can actually read both versions.\n<\/p>\n<p>\nBelow is the adapted version of the code to calculate the hash value. It runs on all SQL Server versions from SQL Server 2005 onwards.\n<\/p>\n<div>\n[sql]\nDECLARE @pswd NVARCHAR(MAX); SET @pswd = 'APassword';<br \/>\nDECLARE @salt VARBINARY(4); SET @salt = CAST(NEWID() AS VARBINARY(4));<br \/>\nDECLARE @hash VARBINARY(MAX);<br \/>\nSET @hash = 0x0100 + @salt +<br \/>\n            HASHBYTES('SHA1', CAST(@pswd AS VARBINARY(MAX)) + @salt);<\/p>\n<p>SELECT @hash AS HashValue, PWDCOMPARE(@pswd,@hash) AS IsPasswordHash;<br \/>\n[\/sql]\n<\/p><\/div>\n<p>\nBecause the <a href=\"http:\/\/sqlity.net\/en\/2259\/crypt_gen_random\/\"><span class=\"tt\">CRYPT_GEN_RANDOM<\/span> function<\/a> was introduced in SQL Server 2008, the above code uses <span class=\"tt\">NEWID<\/span> as an ersatz function. However, that is not really an adequate replacement, so do not use it in your application.\n<\/p>\n<h3>SQL Server 2000<\/h3>\n<p>\nEven SQL Server 2000 used already the <span class=\"tt\">SHA1<\/span> function to hash the passwords. However, passwords were not case sensitive at that time. The actual hash value therefore contained two hashed versions of the password, one of the unchanged password and one of the all-caps version of the password:\n<\/p>\n<div>\n[sql]\nSET @hash = 0x0100 + @salt +<br \/>\n            HASHBYTES('SHA1', CAST(@pswd AS VARBINARY(MAX)) + @salt) +<br \/>\n            HASHBYTES('SHA1', CAST(UPPER(@pswd) AS VARBINARY(MAX)) + @salt);<br \/>\n[\/sql]\n<\/div>\n<p>\nIf you have a an old hash value like that, <span class=\"tt\">PWDCOMPARE<\/span> can still work with it. However, it ignores the all caps version. That means that an upgrade from SQL 2000 to a new version potentially breaks passwords. If you are one of the few people that still have to work with SQL 2000, keep this in mind when you finally upgrade.\n<\/p>\n<h3>Summary<\/h3>\n<p>\nSQL Server stores the passwords for SQL logins as a salted hash value. For this, SQL Server versions 2012 and later use the SHA_512 algorithm and a 32-bit salt.\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.<\/p>\n<p> <a href=\"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/\">[more&#8230;]<\/a><\/p>\n","protected":false},"author":3,"featured_media":2461,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[5,203,34,14],"tags":[146,147,153,38,207,206,15],"class_list":["post-2460","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","category-passwords","category-security","category-sql-server-internals","tag-hash-function","tag-hash-value","tag-password","tag-security-2","tag-sha_512","tag-sha1","tag-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hash Algorithms - How does SQL Server store Passwords? - sqlity.net<\/title>\n<meta name=\"description\" content=\"How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hash Algorithms - How does SQL Server store Passwords? - sqlity.net\" \/>\n<meta property=\"og:description\" content=\"How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/\" \/>\n<meta property=\"og:site_name\" content=\"sqlity.net\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/sqlity.net\" \/>\n<meta property=\"article:published_time\" content=\"2014-06-30T20:05:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-09-09T20:25:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"768\" \/>\n\t<meta property=\"og:image:height\" content=\"468\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sebastian Meine\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sqlity\" \/>\n<meta name=\"twitter:site\" content=\"@sqlity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sebastian Meine\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/\"},\"author\":{\"name\":\"Sebastian Meine\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\"},\"headline\":\"Hash Algorithms &#8211; How does SQL Server store Passwords?\",\"datePublished\":\"2014-06-30T20:05:35+00:00\",\"dateModified\":\"2015-09-09T20:25:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/\"},\"wordCount\":670,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/successful_hash_calculation.jpg\",\"keywords\":[\"Hash Function\",\"Hash Value\",\"password\",\"security\",\"SHA_512\",\"SHA1\",\"SQL Server\"],\"articleSection\":[\"General\",\"Passwords\",\"Security\",\"SQL Server Internals\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/\",\"url\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/\",\"name\":\"Hash Algorithms - How does SQL Server store Passwords? - sqlity.net\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/successful_hash_calculation.jpg\",\"datePublished\":\"2014-06-30T20:05:35+00:00\",\"dateModified\":\"2015-09-09T20:25:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\"},\"description\":\"How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/successful_hash_calculation.jpg\",\"contentUrl\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2014\\\/06\\\/successful_hash_calculation.jpg\",\"width\":768,\"height\":468,\"caption\":\"Calculating the SQL Server SQL login Password Hash\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2460\\\/sql-password-hash\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sqlity.net\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hash Algorithms &#8211; How does SQL Server store Passwords?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/sqlity.net\\\/en\\\/\",\"name\":\"sqlity.net\",\"description\":\"Quality for SQL\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sqlity.net\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\",\"name\":\"Sebastian Meine\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"caption\":\"Sebastian Meine\"},\"sameAs\":[\"http:\\\/\\\/sqlity.net\",\"https:\\\/\\\/x.com\\\/sqlity\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hash Algorithms - How does SQL Server store Passwords? - sqlity.net","description":"How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/","og_locale":"en_US","og_type":"article","og_title":"Hash Algorithms - How does SQL Server store Passwords? - sqlity.net","og_description":"How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.","og_url":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/","og_site_name":"sqlity.net","article_publisher":"https:\/\/www.facebook.com\/sqlity.net","article_published_time":"2014-06-30T20:05:35+00:00","article_modified_time":"2015-09-09T20:25:05+00:00","og_image":[{"width":768,"height":468,"url":"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg","type":"image\/jpeg"}],"author":"Sebastian Meine","twitter_card":"summary_large_image","twitter_creator":"@sqlity","twitter_site":"@sqlity","twitter_misc":{"Written by":"Sebastian Meine","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#article","isPartOf":{"@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/"},"author":{"name":"Sebastian Meine","@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c"},"headline":"Hash Algorithms &#8211; How does SQL Server store Passwords?","datePublished":"2014-06-30T20:05:35+00:00","dateModified":"2015-09-09T20:25:05+00:00","mainEntityOfPage":{"@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/"},"wordCount":670,"commentCount":1,"image":{"@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#primaryimage"},"thumbnailUrl":"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg","keywords":["Hash Function","Hash Value","password","security","SHA_512","SHA1","SQL Server"],"articleSection":["General","Passwords","Security","SQL Server Internals"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/","url":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/","name":"Hash Algorithms - How does SQL Server store Passwords? - sqlity.net","isPartOf":{"@id":"https:\/\/sqlity.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#primaryimage"},"image":{"@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#primaryimage"},"thumbnailUrl":"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg","datePublished":"2014-06-30T20:05:35+00:00","dateModified":"2015-09-09T20:25:05+00:00","author":{"@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c"},"description":"How does SQL Server store its own passwords? Discover which hashing algorithm is used and how you can calculate your own password hash value in T-SQL.","breadcrumb":{"@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#primaryimage","url":"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg","contentUrl":"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg","width":768,"height":468,"caption":"Calculating the SQL Server SQL login Password Hash"},{"@type":"BreadcrumbList","@id":"https:\/\/sqlity.net\/en\/2460\/sql-password-hash\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sqlity.net\/en\/"},{"@type":"ListItem","position":2,"name":"Hash Algorithms &#8211; How does SQL Server store Passwords?"}]},{"@type":"WebSite","@id":"https:\/\/sqlity.net\/en\/#website","url":"https:\/\/sqlity.net\/en\/","name":"sqlity.net","description":"Quality for SQL","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sqlity.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c","name":"Sebastian Meine","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","caption":"Sebastian Meine"},"sameAs":["http:\/\/sqlity.net","https:\/\/x.com\/sqlity"]}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2wXuw-DG","jetpack-related-posts":[],"jetpack_featured_media_url":"https:\/\/sqlity.net\/wp-content\/uploads\/2014\/06\/successful_hash_calculation.jpg","_links":{"self":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts\/2460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/comments?post=2460"}],"version-history":[{"count":0,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts\/2460\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/media\/2461"}],"wp:attachment":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/media?parent=2460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/categories?post=2460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/tags?post=2460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}