我曾经使用以下代码来获取使用SHA1的密码衍生物:
string passPhrase = "Pas5pr@se";
string saltValue = "s@1tValue";
string hashAlgorithm = "SHA1";
int passwordIterations = 2;
PasswordDeriveBytes password =
new PasswordDeriveBytes (passPhrase, saltValueBytes, hashAlgorithm, passwordIterations);
然后我通过执行以下操作来获取字节:
var bytes = password.GetByes(32);
我看到我应该使用Rfc2898DeriveBytes代替。所以我现在将其替换为:
Rfc2898DeriveBytes password1 = new Rfc2898DeriveBytes(passPhrase, saltValueBytes, passwordIterations);
但是当我这样做时:
var bytes = password.GetBytes(32);
我没有得到相同的价值观。任何线索?
答案 0 :(得分:3)
initialize(int stage){
...
mobility = TraCIMobilityAccess().get(getParentModule());
assert(mobility);
traci = mobility->getCommandInterface();
traciVehicle = mobility->getVehicleCommandInterface();
...
}
...
reroute(std::list<std::string> rList){
bool rota;
rota = traciVehicle->changeVehicleRoute(rList);
std::cout << rota << findHost()->getFullName() << std::endl;
}
使用PBKDF2,而Rfc2898DeriveBytes
使用PBKDF1的修改版本。它们彼此不兼容。
鉴于这是一个MACing函数,您也无法将它们从一个转换为另一个。
如果您想开始使用Rfc2898DeriveBytes,您只需要为新数据执行此操作,并继续使用PasswordDeriveBytes
获取旧数据或用户密码。