Oracle登陆身份验证过程原理解析

本文深入解析Oracle 11.2版本的身份验证机制。当客户端连接到Listener后,服务器验证用户名的有效性,提取密码散列值,并利用特定算法生成加密密码(AUTH_SESSKEY)发送给客户端。客户端解密并生成加密后的用户密码(AUTH_PASSWORD)回传。服务器再次解密验证,匹配成功则通过身份验证。此外,密码长度可通过AUTH_PASSWORD长度推断。
摘要由CSDN通过智能技术生成

身份验证的工作原理
这里的Oracle版本为11.2
如果没办法捕获本机数据包请看我的博客

1.连接到Listener之后,身份验证的过程就开始了,真正核心的部分,它是同故宫客户机想服务器发送自己的用户名来完成的。
在这里插入图片描述
2.在前面截获的包中,用户名是system,服务器取出这个用户名并检查是否是一个有效的用户。如果不是,服务器则向客户及发送一个登陆被拒绝的错误。如果用户名确实存在,则服务器从数据库中提取该用户密码的散列值。利用这个散列值生成一个密码。

在这里插入图片描述
3.具体生成过程为:服务器调用orageneric库中的slddt()。实际上这个函数是用来重新获得时间的。将分钟,小时,秒结合起来形成一个用来加密的8个字节的文本。加密中要使用的密钥的前4个字节代表发呢中和小时与用户的16进制密码的散列值的最后四个字节进行异或。密钥的后四个字节是由毫秒和秒与用户16进制密码散列值的前4个字节的异或组成。通过调用oracommon中的kzsrenc(),可以使用该密钥对文本进行加密。通过使用函数Incgks()与kzsrenc()基本上完成了DES密钥的生成,随后它利用函数Incecb()输出ecb模式下的DES密文,就是密码,再利用用户的散列值对密码进行加密,结果就是AUTH_SE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值