A. ASP.NET實現對輸入的密碼用MD5+鹽,並加密
public partial class _Default : System.Web.UI.Page
{
public bool IsMd5
{
get
{
//添加命名空間 using System.Configuration;
return ConfigurationManager.AppSettings["Md5"] == "1";
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsMd5)
{
//添加命名空間 using System.Web.Security;
string MD5 = FormsAuthentication.("被加密的欄位", "MD5"); // SHA1 MD5
}
}
}
---------------------web.config----------------------------------
<appSettings>
<!--加密, 1:代表是; 0:代表不是-->
<add key="Md5" value="1"/>
</appSettings>
B. 資料庫里加密的密碼是怎麼實現的
一般是先加鹽再用不可逆加密演算法加密密碼的,常見的有:sha1 sha256 md5等。
作用:這些加密演算法,只能加密,不能逆向解密,所以使用這些演算法。即時你的資料庫被拖庫,得到的人,也無法知道用戶密碼。
為什麼加鹽
舉例
在注冊時,
假設你的密碼是1234,一般伺服器會加一個鹽(隨便一個亂打的字元串),和你的密碼加在一起,1234和efnU*(@#H!JKNF得到1234efnU*(@#H!JKNF這個值,然後再進行加密(這里我用md5)得到 ,於是資料庫里你的密碼就變為了
登入時,
你輸入1234, 然後伺服器用和注冊相同的步驟進行加密,得到加密後的值,,將這個值與資料庫的加密值比對,如果正確則登入。
C. md5 為什麼 加鹽
原因:鹽被稱作「Salt值」,這個值是由系統隨機生成的,並且只有系統知道。即便兩個用戶使用了同一個密碼,由於系統為它們生成的salt值不同,散列值也是不同的。
MD5演算法的原理可簡要的敘述為:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
(3)對密碼進行加鹽加密擴展閱讀:
MD5相對MD4所作的改進:
1、增加了第四輪。
2、每一步均有唯一的加法常數。
3、減弱第二輪中函數的對稱性。
4、第一步加上了上一步的結果,這將引起更快的雪崩效應(就是對明文或者密鑰改變 1bit 都會引起密文的巨大不同)。
5、改變了第二輪和第三輪中訪問消息子分組的次序,使其更不相似。
6、近似優化了每一輪中的循環左移位移量以實現更快的雪崩效應,各輪的位移量互不相同。
D. 求教nodejs怎麼對密碼進行加鹽的hash加密
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);
}
E. 請教一下QQ登錄中對密碼的加密鹽值是怎麼處理的,是md5 64位加密,但不知道鹽值是怎麼弄的。
一般web中sha,md5 加密演算法,鹽值為登錄名: password=DigestUtils.md5Hex(name+pwd);
F. 加鹽加密的介紹
加鹽加密是一種對系統登錄口令的加密方式,它實現的方式是將每一個口令同一個叫做」鹽「(salt)的n位隨機數相關聯。
G. iOS之MD5加密、加鹽
MD5加密:HASH演算法一種、 是生成32位的數字字母混合碼。
特點:
1、任意數據得出的MD5值長度都是32
2、對原數據進行任何改動,所得到的MD5值都有很大區別
應用:
主要運用在數字簽名、口令加密等方面
MD5改進(加鹽等):
現在的MD5已不再是絕對安全,對此,可以對MD5稍作改進,以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機串,然後再進行MD5
寫一個NSString分類,NSString+wxMD5
md5解密網站: https://www.cmd5.com
使用示例
H. Md5-Md5Crypt加鹽加密密碼操作
Md5 優點:快速計算m,具有單向性 one-way,不可由散列值推出原消息,但是如果密碼過於簡單就會有一定概率被暴力破解。
密碼存儲常用方式:
1、雙重MD5
2、MD5+加鹽
3、雙重MD5+加鹽
我一般使用2,只要資料庫沒有被攻破,密碼被暴力破解的概率是微乎其微的。
pom文件:
登錄的時候,再使用相同的方法驗證密碼是否一致
I. 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位單向加密後的值