Each of the supported masking functions and their required parameters are detailed in the following pages:
Add a fixed value in Parm1. The ADD
function
will also add the fixed value in Parm1 to dates in a character field.
Required parameters: | Parm1. |
Applies to database types: | Numeric. |
Example: |
ship_to_address_ID in table orders will have a value of 5 added to existing. |
Adds a fixed percentage value in Parm1 to the original value.
Required parameters: | Parm1. |
Applies to database types: | Numeric. |
Example: |
customer_ID in table orders will have a value of 10% added to existing value. |
Adds a random value between Parm1 and Parm2 to the existing value.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Numeric. |
Example: |
unit_price in table order_items will have a value between -4 and 4 added to the existing value. |
Adds a random number of days between Parm1 and Parm2 to the existing value.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Date, Datetime. |
Example: |
The test_date column in table credit_cards will have between 10 and 100 days taken off the existing value for that column. |
Adds a random number of hours between Parm1 and Parm2 to the existing value.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Date, Datetime. |
Example: |
creation_date will have between 6 and 9 hours added to existing value. |
Adds a random number of minutes between Parm1 and Parm2 to the existing value.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Date, Datetime. |
Example: |
creation_date will have between 30 and 45 minutes added to existing value. |
Adds a random number of seconds between Parm1 and Parm2 to the existing value.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Date, Datetime. |
Example: |
creation_date will have between 4 and 13 seconds taken off the existing value. |
Adds a random number of years between Parm1 and Parm2 to the existing value.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Date, Datetime. |
Example: |
CREATION_DATE in table OPTIONS_BASE will have between 6 and 9 years added to the existing value. |
Creates a decrypted version of a column based on the key used in Parm1. The column must have been previously encrypted using the AESENCRYPT function with same Parm1 value.
Required parameters: | Parm1, which is the encryption key.
Note: |
Applies to database types: | Character. |
Example: |
The value |
Creates an encrypted version of a column using an AES (Advanced Encryption Standard) algorithm and the key in Parm1.
Note:
The output value will be longer than the original.
Required parameters: | Parm1, which is the encryption key.
Note: |
Applies to database types: | Character. |
Example: | The value 17 Windmill St is
encrypted to 33 6f 53 90 f9 7b c3 aa 09 e9 11 aa 2b d9 ba
bd .
|
The AND
function, in conjunction with
WHERE
, allows you to restrict your obfuscation to
only certain rows. For example, you can mask male customers differently based
on the MALE_NAMES AND PERSON_TYPE_CODE
columns. The
ADD
function must be used on a separate row to the
WHERE function.
Note:
The ADD
function is for masking flat files
only as there is no SQL file.
Required parameters: | Parm1. This is an SQL
WHERE clause.
|
Example: |
Converts a character hashed value from the input (PARM1 must be set to the method MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512).
Required parameters: | Parm1. |
Applies to database types: | Character. |
Example: |
The value |
Social security numbers in Chile (RUT) follow a special format with a check digit at the end which is dependent on the first 8 digits of the number. CHECKRUT must have a Parm1 value – this is the name of another column in the same table which contains 2 or more RUT numbers.
Required parameters: | Parm1. |
Applies to database types: | Numeric. |
Adjust a date of birth by plus or minus Parm1. The age will NOT be adjusted relative to the current date or the override CDATE in the options file.
Required parameters: | Parm1. |
Applies to database types: | Date. |
Example: |
The age 52 (DOB 9/5/1958) will remain at 52 but could be adjusted by, for example, between 10 and 30 days to 16/5/1958. |
Adjust a date of death by plus or minus Parm1. The number of years since death will NOT be adjusted relative to the current date or override the CDATE in the options file.
Required parameters: | Parm1. |
Applies to database types: | Date. |
Example: |
The date of death 10/9/2009 will remain at 1 year but could be adjusted by, between Parm1 and Parm2 to, for example, 7/9/2009. |
Creates a decrypted version of a column based on the key in Parm1.
Required parameters: | Parm1. |
Applies to database types: | Character. |
Example: | e34;;= could be converted to
ABC .
|
Deletes ALL data for the table, optionally using SQL in Parm1.
Required parameters: | Parm1 (Optional). |
Applies to database types: | Character, Date and Numeric. |
Example: |
All data in table orders will be deleted. |
Masks the column with an auto-generated e-mail ID.
Required parameters: | None. |
Applies to database types: | Character. |
Example: |
Column named email will be masked by auto-email IS. |
Creates an encrypted version of a column based on the key in Parm1.
Required parameters: | Parm1. |
Applies to database types: | Character. |
Example: | ABC could be converted to
e34;;= .
|
Note:
The encrypted version will be longer than the original value, so you
need to ensure the column width can accommodate the new value.
Masks the column values with the fixed value provided in Parm1.
Required parameters: | Parm1. This is the fixed value. |
Applies to database types: | Character, Date and Numeric. |
Example: |
Column ACCOUNT_NUMBER will be masked with the fixed value 11100022 and column PERSON_TYPE_CODE will be masked with the value CUST. |
Note:
If you wish to set the value to null, enter the string
<NULL> - FIXED,<NULL>
. If you wish to maintain a space,
enter the string <SPACE> - FIXED,<SPACE>
.
Masks a character value - only changing lowercase, uppercase and numeric characters and leaving all others in place, i.e. maintaining the original format. It also guarantees uniqueness, and so can be applied to key columns.
Required parameters: |
Parm1. This is the mask key. The mask key needs to be a series of alphanumeric characters - for
example |
Applies to database types: | Alphanumeric. |
Example: | Entering the mask key K123abc-/345
will produce a masked output e.g. L543dvs-/201 |
Masks the column values with the 15 and 16 digit CREDIT CARD Numbers. You can also specify the card type you’d like to use (i.e. American Express, Mastercard, Credit Card).
Note:
AMEX card numbers are 15 digits long.
Required parameters: | None. |
Applies to database types: | Character and numeric. |
Example: |
Generates a globally unique identifier - this will be a 36 character value.
Required parameters: | None. |
Applies to database types: | Character. |
Example: |
Returns HASH Values for the integer fields.
Required parameters: |
Parm1, Parm2 (Optional). Parm1 is the seed value for the hash and Parm2 gives the maximum value allowed. |
Applies to database types: | Integer. |
Example: |
Here numbers column of table TEST1 have been hashed with the seed value of 35 and maximum allowed value of up to 5 digits. |
Maintains the first 4 digits of a phone number and hashes the rest based on a fixed key.
Required parameters: | None. |
Applies to database types: | Number. |
Example: |
Takes an existing RUT number (Chilean Social Security number) and hashes the first 8 digits, then adds the appropriate check digit to the end. This is the method that should be used to guarantee consistency across tables.
Note:
The string length of a RUT is 9, so HASHRUT only works on string
columns.
Required parameters: | None. |
Applies to database types: | Numeric. |
Example: |
Masks the column with values between Parm1 and Parm2.
Required parameters: |
Parm1 and Parm2. Parm1 contains the start integer value of the range. Parm2 contains the end integer value of the range. The maximum value for Parm2 is 2147483647. If the database accepts decimal values, you can also use NUMERICRANGE. |
Applies to database types: | Integer. |
Example: |
Column integer will be replaced by values between 100 and 110 and column integer_nn will be replaced by values between 120 and 200. |
Ignores the mask and retains value, if no cross-reference or default value can be found.
Optional parameters: |
Parm1 and Parm2. Parm1 contains the cross-reference value. Parm2 contains the default value. |
Example: |
If Parm1 is absent, IGNORE will revert to using the default value set in Parm2. If Parm2 is also absent, IGNORE will ignore the mask and use existing value. |
Finds the next value from an Oracle sequence. If it is the first time the sequence has been used, it will start at 1, and then is incremented by 1 each subsequent sequence.
Required parameters: |
Parm1 (name of the sequence). Note: |
Example: |
If you called an Oracle sequence ‘FirstSequence’ and used it to update 20,000 fields in one run, the next time it was called, the run would start from 20,001. |
Masks the column with numeric values between Parm1 and Parm2.
Required parameters: |
Parm1 and Parm2. Parm1 contains the start value of the range. Parm2 contains the end value of the range. |
Applies to database types: | Numeric. |
Example: | Column float will be replaced by numeric values between 33.01 and 33.99. |
Hashes a numeric value in a character column as digits.
Required parameters: |
Parm1 (Parm2 and Parm3 are optional). Parm2 is the maximum length of the data. Parm3 is the minimum length of the data. |
Applies to database types: | Character. |
Example: | Numeric value in a character column will be hashed by the seed value to create a numeric string, of length between the values in Parm2 and Parm3. |
The OR
function, in conjunction with
WHERE
, allows you to restrict your obfuscation to
only certain rows.
For example, you can use separate masking rules from credit cards/direct
debit expiration dates to invoices based on the PAYMENT_TYPE_CODE
column. The ADD
function must be used on a separate
row to the WHERE
function.
Note:
The OR function is for masking flat files only as there is no SQL
file.
Required parameters: | Parm1. This is an SQL
WHERE clause.
|
Example: |
Masks a value based on positional rules, as defined in Parm1.
Note:
The OR function is for masking flat files only as there is no SQL
file.
Required parameters: |
Parm1 (Rules for each position are built from the following formulas):
Note: Note: |
Example: |
Column PHONE_NUMBER in Table PEOPLE will have the first 3 characters masked with the fixed value 9, with the remaining digits remaining as original values. Therefore, the resulting masked value will be 999XXXXXX, where X is the existing value Note: |
Masks the column values with the randomly selected values from the seed file.
Required parameters: | Parm1, the seed file name. |
Applies to database types: | Character. |
Example: |
The data for RANDLOV functions can also be drawn from database tables. Select the columns you wish to use and place them in order in the mapping file (i.e. RD_REF_VALUE2, RD_REF_VALUE3 etc). Note: |
Generates random addresses, cities, states/provinces etc., from a seed table, that are valid for an existing zip code.
Required parameters: |
Parm1 (Seed File Name), Parm 2 (position of column in gtrsc_reference_ data) and Parm 3 (the column in the table to get the existing zip code from). If you have a table like in the example below with PARM3 being the column POSTAL_CODE, which is used to reference the rd_ref values 3, 5, and 4 from the gtrsc_reference data seed table using the rd_ref_id of “US_ADDRESSES” and the postal code stored in rd_ref value. |
Optional parameters: | Parm4. This is a default value, which can be used if the rd_ref_value defined in Parm3 can not be found, or fails for any reason during the mask. |
Example: |
The data for RANDLOV functions can also be drawn from database tables. Select the columns you wish to use and place them in order in the mapping file (i.e. RD_REF_VALUE2, RD_REF_VALUE3 etc). Note: |
Masks the column with random values between Parm1 and Parm2.
Required parameters: |
Parm1 and Parm2. Parm1 contains the start value of the range. Parm2 contains the end value of the range. Note: |
Applies to database types: | Numeric and Date. |
Example: | Column ORDER_DATE will be replaced by random date between 2001-Sept-18 to 2002-Nov-15. |
Replaces existing value with a random value between Parm1 and Parm2.
Required parameters: | Parm1 and Parm2. |
Applies to database types: | Character. |
Example: | The following columns will have their values replaced by random date values between Parm1 and Parm2. |
Replaces the column with random text.
Required parameters: |
Parm1 and Parm2. Parm1: The minimum length of the text. Parm2: The maximum length of the text. |
Applies to database types: | Character data types. |
Example: |
|
Masks the column with random values of social security number.
Required parameters: | Parm1 (Optional, which acts as separator for SSN). |
Applies to database types: | Numeric and character types. |
Example: |
Columns listed in ‘Column’ will be replaced by a Random Social Security number. Entering a separator character into Parm1 (i.e. *), will generate a social security number like 987*65*4320. |
Searches the column values for the character pattern mentioned in Parm1 and replaces it with the character pattern mentioned in Parm2. Replace operation is case sensitive.
If only Parm1 is supplied then the value of the Parm1 should be a name
of the CSV file that contains the list of values to be replaced. This CSV file
should be placed in the same directory as gtsdm.exe
.
Required parameters: |
Parm1 and Parm2. Parm1 contains the character pattern to be searched in the Column. If Parm2 is absent then only Parm1 is the name of the CSV file that contains list of values to be replaced. Parm2 contains the character pattern to be replaced. |
Applies to database types: | Character |
Example: |
Case 1 : When Parm2 is present. Here pattern Case 2 : When Parm2 is absent. Here Parm2 is absent and Parm1 is the name of the CSV file that contains a list of values to be replaced. The example CSV file could look like shown below. Also please note
that |
RJUST strips blanks from the right of the string and right justifies the column in the string, padding the left with blanks (default) or the value defined in Parm1.
Required parameters: | Parm1 (Optional). |
Applies to database types: | Character. |
Example: |
The example would mask the LAST_NAME (e.g. Smith) as something like “55555SMITH”. Note: |
Generate a Chilean Social Security Number.
Required parameters: | None. |
Applies to database types: | Character. |
Example: |
A sequential character using BASE62 numbers, for example, starting at AAA will give AAA then AAB etc.
Required parameters: | Parm1. |
Applies to database types: | Character. |
Example: |
Masks the column values with the sequentially selected values from the seed file.
Required parameters: | Parm1. The seed file name. |
Applies to database types: | Character types. |
Example: |
The data for SEQLOV functions can also be drawn from database tables. Select the columns you wish to use and place them in order in the mapping file (i.e. RD_REF_VALUE2, RD_REF_VALUE3 etc). Note: |
Generates sequential addresses, cities, states/provinces etc.,from a seed table, that are valid for an existing zip code.
Required parameters: |
Parm1 (Seed File Name), Parm 2 (position of column in gtrsc_reference_ data) and Parm 3 (the column in the table to get the existing zip code from). If you have a table like in the example below with PARM3 being the column POSTAL_CODE, which is used to reference the rd_ref values 3, 5, and 4 from the gtrsc_reference data seed table using the rd_ref_id of “US_ADDRESSES” and the postal code stored in rd_ref value. |
Optional parameters: | Parm4. This is a default value, which can be used if the rd_ref_value defined in Parm3 can not be found, or fails for any reason during the mask. |
Example: |
Updates each row with a user defined sequence.
For example, if Parm1 is 10 the first row is updated for this column with value 10, the next row with 11 etc. If Parm1 is not supplied the sequence starts at 1.
Optional parameters: | Parm1. The start value for the sequence. |
Example: |
Shuffles the values in the specified column for an entire table. The function creates a seed file by writing out each row’s value for the column to a list of values.
It then performs a RANDLOV of SEQLOV function to overwrite the values in the database.
The Shuffle function allows you to write this list of values to:
File - SDM knows to write to file if a . is present in the parm1 value.
Database - If the parm1 value does not have a . in it, the category name is stored in the database seed table.
Required parameters: |
Parm1. This is the category in the seedtable in which your list of values is saved, for example, MY_ADDRESSES containing Address, City and Postcode. Parm2. This is the column in the seedtable you wish to place the value in, for example, entering 1 would select RD_REF_1, which in this example is Address. |
Required Options: |
In order for the function to run, you will need to use the following (For more information on this, please go to the Options File section on the manual):
|
Applies to database types: | All types. |
Example: |
Notes:
|
Allows you to make a callout to a native database function or a user defined function. You can also use this to use normal SQL operators to process combinations of other columns. All SQL functions with the exception of aggregate functions should work.
Required parameters: |
Parm1, the SQL function or SQL statement. |
Applies to database types: | All types. |
Example: |
|
Generates a US (United States) Tax Identification Number.
Required parameters: | None. |
Applies to database types: | Character and numeric types. |
Example: |
Column TAXID in table PEOPLE will be masked with a generated US Tax Identification Number. |
Searches the column values for every single character mentioned in Parm1 and replaces it with the sequentially corresponding character mentioned in Parm2. TRANSLATE is a character-by-character operation.
Required parameters: |
Parm1 and Parm2. Parm1 contains the character(s) to be searched in the Column. Parm2 contains the corresponding character(s) to be replaced. |
Applies to database types: | Character types. |
Example: |
All instances of ‘a’ in column FIRST_NAME will be translated to ‘x’, and all instances of 1 in column MEMBERSHIP_ID will be translated to 6. |
Converts characters consistently to other characters. A to C, B to D etc, set Parm1 to a number to act as a key.
Required parameters: |
Parm1. It contains the key of the transposition. |
Applies to database types: | Character types. |
Example: |
‘ab’ if found in the column value will be translated to ‘ef‘ i.e. every ‘a’ character translated to ‘e’ and every ‘b’ character translated to ‘f’. This will vary depending on the key. |
Truncates ALL data for the table. The TRUNCATE function can also be used with a WHERE clause.
Required parameters: | None. |
Applies to database types: | Character, Date and Numeric. |
Example: |
Truncating the data will execute a fast delete of ALL the data in the table. |
Masks the column with an auto-generated 7digit US Phone number of the
format xxx-xxxx
.
Required parameters: | None. |
Applies to database types: | Character types. |
Example: |
Column named usphone will be masked by auto-generated 7-digit US Phone numbers. |
Masks the column with an auto-generated 10 digit US Phone number of the
format xxx-xxx-xxxx
.
Required parameters: | None. |
Applies to database types: | Character types. |
Example: |
Column named usphone10 will be masked by auto-generated 10-digit US Phone numbers. |
Masks the column with an auto-generated 5-digit US Zip code.
Required parameters: | None. |
Applies to database types: | Character types. |
Example: |
Column named uszip will be masked by auto-generated 5-digit US Zip code. |
Masks the column with an auto-generated 9-digit US Zip+4 code of the
format xxxxxxxxx
.
Required parameters: | None. |
Applies to database types: | Character types. |
Example: |
Column named uszip will be masked by auto-generated 9-digit US Zip code. |
Identifies whether a column contains a valid SSN (United States Social Security Number), then, if yes, masks with a generated SSN.
Required parameters: | None. |
Applies to database types: | Character and numeric types. |
Example: |
Column ID in table PEOPLE will be replaced by a Random Social Security number, if a valid Social Security Number is found in the column. |
Identifies whether the first 9 characters of a column contains a valid SSN (United States Social Security Number), then, if yes, masks with a generated SSN.
Required parameters: | None. |
Applies to database types: | Character and numeric types. |
Example: |
Column ID in table PEOPLE will be replaced by a Random Social Security number, if a valid Social Security Number is found in the first 9 characters of the column. |
Identifies whether the column contains a valid TIN (United States Tax Identification Number), then, if yes, masks with a generated TIN.
Required parameters: |
None. |
Applies to database types: | Character and numeric types. |
Example: |
Column ID in table PEOPLE will be replaced by a Random Tax Identification Number, if a valid TIN is found in the column. |
Variant values are generated based on Parm1 (% value) and then added to or subtracted from the column values.
Required parameters: |
Parm1, Parm2(Optional), Parm3(Optional). Parm1 gives percentage variance (1 - 99). Parm2 is the minimum permitted value. Parm3 is the maximum permitted value. |
Applies to database types: | Numeric types. |
Example: |
If the column value is 100 then Parm1 applies 60% variance and a random number is generated between 40 and 160. However Parm2 (minimum permitted value) and Parm3 (maximum permitted value) ensures that the generated random value lies in the range 50 - 150 instead of 40 – 160. |
The WHERE function allows you to restrict your obfuscation to only certain rows in the table. This will allow you to mask, for example, Male names and Female names differently based on the GENDER column.
The WHERE function does not require a column to be entered. Parm1 will contain the SQL WHERE clause used to sub-select the table data.
Required parameters: |
Parm1. Parm1 is an SQL WHERE clause. It is worth running the WHERE clause in a standard SQL IDE to validate the syntax is correct. |
Applies to: | Entire table. |
Example: |
If the MSP_CODE is like HSD Note: If you wish to issue multiple WHERE clauses, repeat the WHERE function. Each WHERE function will refer to the block of masking functions BELOW it in the CSV. In the above example, all of the columns HELP_TEXT will be masked with random values from companies.txt; the rows with an MSP_CODE starting with ‘HSD’ will have the value huw assigned to CREATED_BY; and the rows with an MSP_CODE starting with ‘OFG’ will have the value fred assigned to CREATED_BY and a random value from the lastnames.txt file assigned to column MESSAGE_TEXT. |