Oracle 10g 和 PowerShell - 如何创建散列密码
Oracle 10g & PowerShell - How to create hashed password
我有一个 PowerShell 脚本可以创建一个新的 Oracle 用户。代码是正确的,并且按预期创建了用户。我唯一的问题是复制 Oracle 的密码散列。
我希望能够使用与 Oracle 10g 相同的算法在 PowerShell 中散列密码,然后使用此代码将散列密码插入 Oracle。 IDENTIFIED BY VALUES 'NEED TO INSERT HASHED PASSWORD
'.
这是数据库中当前密码的示例:IDENTIFIED BY VALUES '033348433385A2DE'
我在 PowerShell 中尝试了一些操作,但无法正常工作。据我了解,Oracle 使用用户名和密码组合来生成散列值等。任何建议将不胜感激。
这是我目前使用的代码。它建立一个 Oracle 连接,然后插入所需的信息。
$login_newname = 'SomeName'
$query_user = CREATE USER $login_newname
IDENTIFIED BY VALUES 'NEED TO INSERT HASHED PASSWORD'
DEFAULT TABLESPACE USER_DATA
TEMPORARY TABLESPACE TEMPORARY_DATA
PROFILE DEFAULT
ACCOUNT UNLOCK"
$connectionstring = "User Id = $username;Password = $password;Data Source = $datasource"
$con = New-Object Oracle.ManagedDataAccess.Client.OracleConnection(“$connectionString”)
$con.open()
$cmd=$con.CreateCommand()
$query_user_1 = "GRANT CONNECT TO $login_newname WITH ADMIN OPTION"
$query_user_2 = "GRANT RESOURCE TO $login_newname WITH ADMIN OPTION"
$query_user_3 = "GRANT ALL_ACCESS TO $login_newname WITH ADMIN OPTION"
$query_user_4 = "ALTER USER $login_newname DEFAULT ROLE CONNECT, RESOURCE"
$query_user_5 = "GRANT SELECT ANY TABLE TO $login_newname WITH ADMIN OPTION"
$query_user_6 = "GRANT UNLIMITED TABLESPACE TO $login_newname WITH ADMIN OPTION"
$cmd.CommandText=$query_user
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_1
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_2
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_3
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_4
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_5
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_6
$cmd.ExecuteNonQuery() | Out-Null
我已经设法为需要复制相同功能的任何人找到 work-around。
我已经默认了这一行 IDENTIFIED BY VALUES 'password'
。现在这将在 Oracle 中创建一个密码为 'password' 的用户,但它不会应用散列。
我不得不添加一行:
$query_user_7 = "ALTER USER $login_newname IDENTIFIED BY password(This can be anything, your desired password)"
然后像这样执行查询:
$cmd.CommandText=$query_user_7
$cmd.ExecuteNonQuery() | Out-Null
这会将 Oracle 散列应用于您的新密码并允许您登录。
请注意,这适用于 Oracle 10g。我没有尝试在更高版本的 Oracle 上执行此操作。
我有一个 PowerShell 脚本可以创建一个新的 Oracle 用户。代码是正确的,并且按预期创建了用户。我唯一的问题是复制 Oracle 的密码散列。
我希望能够使用与 Oracle 10g 相同的算法在 PowerShell 中散列密码,然后使用此代码将散列密码插入 Oracle。 IDENTIFIED BY VALUES 'NEED TO INSERT HASHED PASSWORD
'.
这是数据库中当前密码的示例:IDENTIFIED BY VALUES '033348433385A2DE'
我在 PowerShell 中尝试了一些操作,但无法正常工作。据我了解,Oracle 使用用户名和密码组合来生成散列值等。任何建议将不胜感激。
这是我目前使用的代码。它建立一个 Oracle 连接,然后插入所需的信息。
$login_newname = 'SomeName'
$query_user = CREATE USER $login_newname
IDENTIFIED BY VALUES 'NEED TO INSERT HASHED PASSWORD'
DEFAULT TABLESPACE USER_DATA
TEMPORARY TABLESPACE TEMPORARY_DATA
PROFILE DEFAULT
ACCOUNT UNLOCK"
$connectionstring = "User Id = $username;Password = $password;Data Source = $datasource"
$con = New-Object Oracle.ManagedDataAccess.Client.OracleConnection(“$connectionString”)
$con.open()
$cmd=$con.CreateCommand()
$query_user_1 = "GRANT CONNECT TO $login_newname WITH ADMIN OPTION"
$query_user_2 = "GRANT RESOURCE TO $login_newname WITH ADMIN OPTION"
$query_user_3 = "GRANT ALL_ACCESS TO $login_newname WITH ADMIN OPTION"
$query_user_4 = "ALTER USER $login_newname DEFAULT ROLE CONNECT, RESOURCE"
$query_user_5 = "GRANT SELECT ANY TABLE TO $login_newname WITH ADMIN OPTION"
$query_user_6 = "GRANT UNLIMITED TABLESPACE TO $login_newname WITH ADMIN OPTION"
$cmd.CommandText=$query_user
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_1
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_2
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_3
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_4
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_5
$cmd.ExecuteNonQuery() | Out-Null
$cmd.CommandText=$query_user_6
$cmd.ExecuteNonQuery() | Out-Null
我已经设法为需要复制相同功能的任何人找到 work-around。
我已经默认了这一行 IDENTIFIED BY VALUES 'password'
。现在这将在 Oracle 中创建一个密码为 'password' 的用户,但它不会应用散列。
我不得不添加一行:
$query_user_7 = "ALTER USER $login_newname IDENTIFIED BY password(This can be anything, your desired password)"
然后像这样执行查询:
$cmd.CommandText=$query_user_7
$cmd.ExecuteNonQuery() | Out-Null
这会将 Oracle 散列应用于您的新密码并允许您登录。
请注意,这适用于 Oracle 10g。我没有尝试在更高版本的 Oracle 上执行此操作。