㈠ 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);