zoukankan      html  css  js  c++  java
  • Salt (cryptography)

    Salt (cryptography)

     

    Here is an incomplete example of a salt value for storing passwords. This first table has two username and password combinations. The password is not stored.

    UsernamePassword
    user1 password123
    user2 password123

    The salt value is generated at random and can be any length, in this case the salt value is 8 bytes long. The salt value is appended to the plaintext password and then the result is hashed, this is referred to as the hashed value. Both the salt value and hashed value are stored.

    UsernameSalt valueString to be hashedHashed value = SHA256 (Password + Salt value)
    user1 E1F53135E559C253 password123E1F53135E559C253 72AE25495A7981C40622D49F9A52E4F1565C90F048F59027BD9C8C8900D5C3D8
    user2 84B03D034B409D4E password12384B03D034B409D4E B4B6603ABC670967E99C7E7F1389E40CD16E78AD38EB1468EC2AA1E62B8BED3A

    As the table above illustrates, different salt values will create completely different hashed values, even when the plaintext passwords are exactly the same. Additionally, dictionary attacks are mitigated to a degree as an attacker cannot practically precompute the hashes. However, a salt cannot protect common or easily guessed passwords.

    In cryptography, a salt is random data that is used as an additional input to a one-way function that hashes data, a password or passphrase. Salts are used to safeguard passwords in storage. Historically a password was stored in plaintext on a system, but over time additional safeguards developed to protect a user's password against being read from the system. A salt is one of those methods.

    A new salt is randomly generated for each password. In a typical setting, the salt and the password (or its version after key stretching) are concatenated and processed with a cryptographic hash function, and the resulting output (but not the original password) is stored with the salt in a database. Hashing allows for later authentication without keeping and therefore risking exposure of the plaintext password in the event that the authentication data store is compromised.

    Salts defend against a pre-computed hash attack, e.g. rainbow tables.[1] Since salts do not have to be memorized by humans they can make the size of the hash table required for a successful attack prohibitively large without placing a burden on the users. Since salts are different in each case, they also protect commonly used passwords, or those users who use the same password on several sites, by making all salted hash instances for the same password different from each other.

    Cryptographic salts are broadly used in many modern computer systems, from Unix system credentials to Internet security.

    Salts are closely related to the concept of a cryptographic nonce.

  • 相关阅读:
    temp table && check temp table
    AGP Aperture Size && UMA Frame Buffer Size
    ASP中應用BeginTrans的例子
    .NET中加密和解密的实现方法
    c#中Split等分割字符串的几种方法(转)
    AJAX网络开发技术
    MS SQL操作類
    Webconfig中使用appSettings设置连接字符串(转)
    男性10大死因与饮食有关 12食物预防猝死
    C#(IsNumeric) 字符串转换为数字的4种方法(转)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/12980336.html
Copyright © 2011-2022 走看看