2011-08-08 77 views
0

我正在編寫代碼來加密密碼並匹配加密密碼以檢查密碼是否微弱。我已經使用ECB模式API編寫了加密代碼,並且不能按預期工作。我在調試代碼的時候遇到的問題很少。我看到的唯一選項是BF_ecb_encrypt。在C++中使用Openssl blowfish加密算法

1)ecb模式一次處理8bytes。如果我的密碼少於8個字符會怎麼樣?應該填充隨機生成的char?或與零的?它會以這種方式工作嗎?或任何其他可能的方式

2)段:

BF_set_key(bfKey, strlen(achSalt), achSalt); 
String strBuf; 
while (len >= 8) 
{ 
    BF_ecb_encrypt(inStr,buf, bfKey, BF_ENCRYPT); 
    len -= 8; 
    inStr += 8; 
    strBuf += String(reinterpret_cast<const char*>(buf)); 
    buf +=8; 
} 

有代碼中的任何錯誤?

感謝您的幫助。

+0

你可能想散列你的密碼而不是加密它 - 這是存儲密碼的標準方式,所以除非你有很好的理由進行加密,不要這樣做 – Patrick

+0

你能舉一個例子嗎? – Mrun

+0

Open ssl包含散列算法:http://www.openssl.org/docs/crypto/sha.html – Patrick

回答

0

如果你說:

1)ECB模式工作在8個字節的時間。如果我的密碼比8個字符少 會怎麼樣?

爲什麼不只是爲了「安全」的原因設置最小長度爲8個字符。人們通常擁有超過8個字符的密碼,因爲如果它的更長和更復雜的話,當它更難以破解時。

+0

你是對的Flyphe。然而,我正在使用現有的數據庫,其中密碼可能與用戶名(長度小於8字節)相同,這就是我的用例有效地發現密碼是否弱。 – Mrun

+0

啊確定enuff。 – Rhexis