Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLPlus插入“(用户)”“用户”(用户名、用户密码)超级管理员,下面有一个名为Users的表_Sql_Oracle_Sql Insert - Fatal编程技术网

SQLPlus插入“(用户)”“用户”(用户名、用户密码)超级管理员,下面有一个名为Users的表

SQLPlus插入“(用户)”“用户”(用户名、用户密码)超级管理员,下面有一个名为Users的表,sql,oracle,sql-insert,Sql,Oracle,Sql Insert,早上好 我确信这是一个重复的问题,但由于我不是一个SQL人员,所以很难正确地表达这个问题,我刚刚被指派了这个任务 我使用的是ORACLE SQLPlus,在SQLDeveloper中,我有其他用户>超级管理员,下面有一个名为Users的表 要向我正在使用的数据库添加新用户,请执行以下操作: INSERT INTO "SUPERADMIN"."USERS" (USER_NAME, USER_PASS) VALUES ('SUPERTEST', 'NewPas

早上好

我确信这是一个重复的问题,但由于我不是一个SQL人员,所以很难正确地表达这个问题,我刚刚被指派了这个任务

我使用的是ORACLE SQLPlus,在SQLDeveloper中,我有其他用户>超级管理员,下面有一个名为Users的表

要向我正在使用的数据库添加新用户,请执行以下操作:

INSERT INTO "SUPERADMIN"."USERS" (USER_NAME, USER_PASS) VALUES ('SUPERTEST', 'NewPassword01')

它添加了我的用户,但如何散列出纯文本密码

如果这是重复的,我再次表示最诚挚的歉意。

假设您的USER\u PASS列具有原始数据类型,请使用:

插入SUPERADMIN.USERS 用户名, 用户通行证 价值观 “超级测试”, 标准_散列'NewPassword01','SHA1' ; 第二个参数的有效哈希算法是:SHA1、SHA256、SHA386、SHA512或MD5

小提琴

使现代化 我看了一下设置,用户通行证是简单的VARCHAR2

您应该真正了解当前系统是如何对字符串进行散列和编码的,因为如果您不使用完全相同的方法,那么事情就会出错

如果要将原始值转换为字符串而不进行任何编码,可以使用UTL_RAW.CAST_TO_VARCHAR2:

插入到用户中 用户名, 用户通行证 价值观 “超级测试”, UTL_原始铸造_至_VARCHAR2 标准_散列'NewPassword01','SHA1' ; 如果要将原始输出编码为十六进制字符串,可以使用RAWTOHEX转换原始输出:

插入到用户中 用户名, 用户通行证 价值观 “超级测试”, RAWTOHEX标准_哈希'NewPassword01','SHA1' ; 如果希望在BASE64编码中使用值,也可以使用UTL_ENCODE.BASE64_ENCODE:

插入到用户中 用户名, 用户通行证 价值观 “超级测试”, UTL_原始铸造_至_VARCHAR2 UTL_ENCODE.BASE64_ENCODE 标准_散列'NewPassword01','SHA1' ; 正如您所看到的,它们都接受相同的输入,但给出的值非常不同:

从superadmin.users中选择*; 产出:


dbfiddle

如何散列出纯文本密码?您希望使用哪种哈希算法?有很多,如果您的应用程序没有使用正确的密码,那么当您的应用程序使用不同的哈希算法对用户输入进行哈希运算时,值将不匹配。如果这是针对现有的应用程序,它是否已经具有对密码进行哈希运算的功能,并且可能创建用户-可能在包中?@MT0 SHA我相信。基于有人为我添加用户而构建的JAVA应用程序。@AlexPoole JAVA应用程序运行良好,但我的任务是自动化整个过程,因此我正在构建一个.sql文件以供注入,无法使用该应用程序。感谢您的快速响应。我猜我的没有原始数据类型,因为我得到了SQL错误:ORA-00904:STANDARD_HASH:invalid identifier 00904。使用SQLDeveloper我已经查看了设置,用户通道是简单的VARCHAR2。单位BYTE@GrahamJordan更新了答案以将原始数据转换为字符串。。。。但是,您应该了解当前系统的工作原理,然后回来问一个更有针对性的问题,因为我们所做的只是猜测它是如何工作的,如果您的方法不同,那么我们建议的输出将与您的应用程序所期望的不符。非常感谢您为此投入的所有时间,我真的非常感谢。我想我可能已经找到了STANDARD_HASH拒绝工作的原因。我正在使用Oracle 11.2。从外观上看,下一个版本中添加了标准_散列。现在看看自己的线索,现在我有了一个起点。 USER_NAME | USER_PASS :-------- | :--------------------------------------- SUPERTEST | %U)?Q0?????lR? xm/ SUPERTEST | 255529AE5130DAB082A29CAC6C52BC20786D2F01 SUPERTEST | JVUprlEw2rCCopysbFK8IHhtLwE=