Mat*_*ell 1 language-agnostic security encryption hash key
我想知道是否有可能生成一个有效期为(大约)三个月的"密钥"?
例如,让我们说(假设)我生成一个像这样的密钥(伪代码):
Key = HASH ( MachineID, Salt );
Run Code Online (Sandbox Code Playgroud)
我验证密钥有效的方法是这样检查:
isValid(Key)
{
return Key == HASH ( MachineID, Salt )
}
Run Code Online (Sandbox Code Playgroud)
你会如何扩展它来生成这样的键:
Key = HASH ( MachineID, Salt, LastMonth, ThisMonth, NextMonth );
Run Code Online (Sandbox Code Playgroud)
但仍然有你的isValid正常工作?
我能看到的一种方法是:
isValid(Key)
{
return Key == HASH ( MachineID, Salt, (LastMonth), (ThisMonth), (NextMonth) )
|| Key == HASH ( MachineID, Salt, (LastMonth-1), (LastMonth), (ThisMonth) )
|| Key == HASH ( MachineID, Salt, (ThisMonth), (ThisMonth+1), (ThisMonth+2) )
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有任何更好的想法.
这样做的一种典型方法是撰写明文消息,说明到达密钥所需的内容,然后是安全摘要.你会因此返回类似的东西
function Key(password, expriry) {
return "Expires: " + dateformat(expiry) +
HASH(salt + expiry + password)
}
Run Code Online (Sandbox Code Playgroud)
请注意,返回的密钥包含明文的到期日期,但也包含在摘要中,以便它不会被篡改.与往常一样,没有必要解码摘要,只验证相同的输入产生相同的摘要.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |