2011-08-08 146 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