我正在寻找旧线程的澄清,以证明答案是正确的,但我想了解为什么它是正确的,而不是只获取代码并在我的项目中使用它。我正在尝试针对旧的 Oracle 11g 数据库对 Web 应用程序进行身份验证,该数据库中已有用户/密码。
Oracle 11g 数据库使用两步过程来哈希密码。 首先,它使用 SHA-1 对原始密码进行哈希处理,然后在末尾添加随机的 20 位盐,将它们放在一起,并在前面添加 S:,并将其保存在 sys.user$ 表的 SPARE4 列下。
我不明白的是为什么我不能将原始密码放入像这样的 SHA-1 哈希计算器中:
然后获取前40个字符?当我尝试时,哈希值相差很大?
Oracle 11g 数据库使用两步过程来哈希密码。首先,它使用 SHA-1 对原始密码进行哈希处理,然后在末尾添加一个随机的 20 位数字盐,将它们放在一起并添加一个 S。
不,它获取原始密码的字节和 20 位盐的字节,并将它们连接在一起,然后然后通过 SHA-1 哈希过程传递加盐密码,然后将
S
附加到末尾。