An easy way to generate a value string from the ssl is to use openssl
Let’s take a random salt of ABCDEFGHIJ. The length of 10 is important.
The hexadecimal representation is -41-42-43-44-45-46-47-48-49-4A-
$ echo "SafePassw0rDABCDEFGHIJ\c" | openssl dgst -sha1
(stdin)= 47cc4102144d6e479ef3d776ccd9e0d0158842bb
With this hash, I can construct my value
SQL> create user testuser identified by values 'S:47CC4102144D6E479EF3D776CCD9E0D0158842BB4142434445464748494A';
User created.
SQL> grant create session to testuser;
Grant succeeded.
SQL> conn testuser/SafePassw0rD
Connected.
If you prefer PL/SQL over shell, use DBMS_CRYPTO
SQL> exec dbms_output.put_line('S:'||dbms_crypto.hash(utl_raw.cast_to_raw('SafePassw0rDABCDEFGHIJ'),dbms_crypto.HASH_SH1)||utl_raw.cast_to_raw('ABCDEFGHIJ'))
S:47CC4102144D6E479EF3D776CCD9E0D0158842BB4142434445464748494A
PL/SQL procedure successfully completed.
In 12c there is also a “T” String. According to the doc
The cryptographic hash function used for generating the 12C verifier is based on a de-optimized algorithm involving PBKDF2 and SHA-512.