㈠ md5 為什麼 加鹽
原因:鹽被稱作「Salt值」,這個值是由系統隨機生成的,並且只有系統知道。即便兩個用戶使用了同一個密碼,由於系統為它們生成的salt值不同,散列值也是不同的。
MD5演算法的原理可簡要的敘述為:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
(1)系統登錄加密鹽擴展閱讀:
MD5相對MD4所作的改進:
1、增加了第四輪。
2、每一步均有唯一的加法常數。
3、減弱第二輪中函數的對稱性。
4、第一步加上了上一步的結果,這將引起更快的雪崩效應(就是對明文或者密鑰改變 1bit 都會引起密文的巨大不同)。
5、改變了第二輪和第三輪中訪問消息子分組的次序,使其更不相似。
6、近似優化了每一輪中的循環左移位移量以實現更快的雪崩效應,各輪的位移量互不相同。
㈡ 求教nodejs怎麼對密碼進行加鹽的hash加密
以前java項目最近打算用node.js重寫,但是加密這里實在沒搞定。java中加密是:1024次加鹽sha-1加密,
一個例子:salt:47998d63768aa877,密文:,明文:yunstudio2013
下面是java代碼:
private static byte[] digest(byte[] input, String algorithm, byte[] salt, int iterations) {
try {
MessageDigest digest = MessageDigest.getInstance(algorithm);
if (salt != null) {
digest.update(salt);
}
byte[] result = digest.digest(input);
for (int i = 1; i < iterations; i++) {
digest.reset();
result = digest.digest(result);
}
return result;
} catch (GeneralSecurityException e) {
throw Exceptions.unchecked(e);
}
}
我在js裡面是這么乾的,但是結果一直不對,代碼如下:
//
var hash = crypto.createHmac("sha1", 「47998d63768aa877」).update(「yunstudio2013」).digest(「hex」);
for (var i = 1; i < 1024; i++) {
hash = crypto.createHmac("sha1", 「47998d63768aa877」).update(hash).digest(「hex」);
console.log(hash);
}
㈢ 加鹽加密的介紹
加鹽加密是一種對系統登錄口令的加密方式,它實現的方式是將每一個口令同一個叫做」鹽「(salt)的n位隨機數相關聯。
㈣ Laravel 5.2 默認的密碼加密,怎麼加點鹽
查看這部分的源代碼可得,
// Laravel 的 bcrypt 就是
$hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => 10]);
因為 password_hash 使用的是 crypt 演算法, 因此參與計算 hash值的:
演算法(就像身份證開頭能知道省份一樣, 由鹽值的格式決定), cost(默認10) 和 鹽值 是在$hash中可以直接看出來的!
所以說, Laravel 中bcrypt的鹽值是PHP自動隨機生成的字元, 雖然同一個密碼每次計算的hash不一樣.
但是通過 $hash 和 密碼, 卻可以驗證密碼的正確性!
具體來說, 比如這個
$hash = password_hash('password',PASSWORD_BCRYPT,['cost' => 10]);
echo $hash;
// 比如我這次算的是
// $hash = '$2y$10$';
那麼我們從這個 crypt的hash值中可以看到,
因為以$2y$開頭, 所以它的演算法是 CRYPT_BLOWFISH .
同時 CRYPT_BLOWFISH 演算法鹽值格式規定是 :
以$2y$開頭 + 一個兩位cost參數 + $ + 22位隨機字元("./0-9A-Za-z")
$hash(CRYPT_BLOWFISH是固定60位) = 鹽值 + 31位單向加密後的值
㈤ iOS之MD5加密、加鹽
MD5加密:HASH演算法一種、 是生成32位的數字字母混合碼。
特點:
1、任意數據得出的MD5值長度都是32
2、對原數據進行任何改動,所得到的MD5值都有很大區別
應用:
主要運用在數字簽名、口令加密等方面
MD5改進(加鹽等):
現在的MD5已不再是絕對安全,對此,可以對MD5稍作改進,以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機串,然後再進行MD5
寫一個NSString分類,NSString+wxMD5
md5解密網站: https://www.cmd5.com
使用示例
㈥ 請教一下QQ登錄中對密碼的加密鹽值是怎麼處理的,是md5 64位加密,但不知道鹽值是怎麼弄的。
一般web中sha,md5 加密演算法,鹽值為登錄名: password=DigestUtils.md5Hex(name+pwd);