<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Generate Random values for encoding in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931205#M366361</link>
    <description>&lt;P&gt;Here is my code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
Data have;
input  MEZAHE_PART $;
cards;
MEZAHE_
9
710
1040
1323
1417
1610
1618
1922
2143
2323
2413
2511
2629
2823
3026
3218
3711
3720
3928
4213
4219
4223
4318
4811
5283
5428
6315
6320
6412
6610
6726
6727
6915
6919
7125
7222
7514
7620
7958
8119
8213
8420
9327
9721
9726
9827
;
Run;
data want;
 set have;
 length encode $ 20;
 temp=MEZAHE_PART;
 do i=1 to lengthn(temp);
   encode=cats(encode,byte(rank(char(temp,i)) + 1));
 end;
 drop temp i;
run;
data want;
 set want;
 length decode $ 20;
 do i=1 to lengthn(encode);
   decode=cats(decode,byte(rank(char(encode,i)) - 1));
 end;
 drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 07 Jun 2024 02:12:09 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2024-06-07T02:12:09Z</dc:date>
    <item>
      <title>Generate Random values for encoding</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931103#M366322</link>
      <description>I have list of personal columns which needs to be masked/encoded/encrypted so sensitive information is not passed to all the users. &lt;BR /&gt;&lt;BR /&gt;Column list is customer_name,customer_id, customer_dob&lt;BR /&gt;&lt;BR /&gt;So everytime we download data from production ,all these columns would have different value which are not traceable.&lt;BR /&gt;&lt;BR /&gt;Input data set looks like this &lt;BR /&gt;customer_name customer_id customer_dob balance&lt;BR /&gt;&lt;BR /&gt;Rahul 1000 29/04/2002 10058&lt;BR /&gt;Ramesh 1005 12/03/1998 15008&lt;BR /&gt;&lt;BR /&gt;So my output can be something like this &lt;BR /&gt;&lt;BR /&gt;customer_name customer_id customer_dob balance&lt;BR /&gt;&lt;BR /&gt;Yaswl 5423 17/11/1992 10058&lt;BR /&gt;Oweqyu 6421 12/03/1998 15008&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Any suggestions is highly appreciated &lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;</description>
      <pubDate>Thu, 06 Jun 2024 11:09:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931103#M366322</guid>
      <dc:creator>yashpande</dc:creator>
      <dc:date>2024-06-06T11:09:12Z</dc:date>
    </item>
    <item>
      <title>Re: Generate Random values for encoding</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931204#M366360</link>
      <description>If your data is standard ASCII code ,you could try this:&lt;BR /&gt;&lt;A href="https://blogs.sas.com/content/sgf/2024/01/10/using-the-bxor-function-to-encode-and-decode-text/" target="_blank"&gt;https://blogs.sas.com/content/sgf/2024/01/10/using-the-bxor-function-to-encode-and-decode-text/&lt;/A&gt;</description>
      <pubDate>Fri, 07 Jun 2024 01:41:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931204#M366360</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-06-07T01:41:59Z</dc:date>
    </item>
    <item>
      <title>Re: Generate Random values for encoding</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931205#M366361</link>
      <description>&lt;P&gt;Here is my code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
Data have;
input  MEZAHE_PART $;
cards;
MEZAHE_
9
710
1040
1323
1417
1610
1618
1922
2143
2323
2413
2511
2629
2823
3026
3218
3711
3720
3928
4213
4219
4223
4318
4811
5283
5428
6315
6320
6412
6610
6726
6727
6915
6919
7125
7222
7514
7620
7958
8119
8213
8420
9327
9721
9726
9827
;
Run;
data want;
 set have;
 length encode $ 20;
 temp=MEZAHE_PART;
 do i=1 to lengthn(temp);
   encode=cats(encode,byte(rank(char(temp,i)) + 1));
 end;
 drop temp i;
run;
data want;
 set want;
 length decode $ 20;
 do i=1 to lengthn(encode);
   decode=cats(decode,byte(rank(char(encode,i)) - 1));
 end;
 drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 07 Jun 2024 02:12:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/931205#M366361</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-06-07T02:12:09Z</dc:date>
    </item>
    <item>
      <title>Re: Generate Random values for encoding</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/932122#M366696</link>
      <description>&lt;P&gt;This is very much on the lines of my expected output. Now I have got more clarity and sample. So here is my control table which has list of columns which needs to be encoded&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="238"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="174"&gt;Column&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;Type&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;person_name&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;legal_name&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;legal_name_GRIDORG&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;date_of_birth&lt;/TD&gt;
&lt;TD&gt;Num&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;prs_birtNowh_dt&lt;/TD&gt;
&lt;TD&gt;Num&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;birth&lt;/TD&gt;
&lt;TD&gt;Num&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;deceased_date&lt;/TD&gt;
&lt;TD&gt;Num&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;deceased_notification_date&lt;/TD&gt;
&lt;TD&gt;Num&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;prefix_name&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;initials&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;client_name&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;legal_name_eup&lt;/TD&gt;
&lt;TD&gt;Char&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;relation_nr&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;num&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And here is the Sample data&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="917"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;relation_nr&lt;/TD&gt;
&lt;TD width="86"&gt;relation_type&lt;/TD&gt;
&lt;TD width="122"&gt;relation_start_date&lt;/TD&gt;
&lt;TD width="64"&gt;relation_end_date&lt;/TD&gt;
&lt;TD width="88"&gt;date_of_birth&lt;/TD&gt;
&lt;TD width="64"&gt;established_date&lt;/TD&gt;
&lt;TD width="64"&gt;deceased_date&lt;/TD&gt;
&lt;TD width="64"&gt;deceased_notification_date&lt;/TD&gt;
&lt;TD width="87"&gt;person_name&lt;/TD&gt;
&lt;TD width="64"&gt;prefix_name&lt;/TD&gt;
&lt;TD width="64"&gt;initials&lt;/TD&gt;
&lt;TD width="78"&gt;segment_cd&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;918598&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;9/7/1972&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Nolte&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;918814&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;3/4/1924&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;6/6/2019&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;Bruggen&lt;/TD&gt;
&lt;TD&gt;van der&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;918832&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;11/20/1926&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Griffioen&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;J&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;918857&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;5/3/1929&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;Kneppers&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;H&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;918923&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;1/29/1932&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;5/8/2018&lt;/TD&gt;
&lt;TD&gt;Noort&lt;/TD&gt;
&lt;TD&gt;van&lt;/TD&gt;
&lt;TD&gt;J&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;918997&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;7/17/1914&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;4/7/2008&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;Heijermans&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;L&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;919224&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;12/15/1947&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;Schaap&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;R&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;919222&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;3/16/1951&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Beleir&lt;/TD&gt;
&lt;TD&gt;de&lt;/TD&gt;
&lt;TD&gt;APM&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;919271&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;6/28/1961&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Kolk&lt;/TD&gt;
&lt;TD&gt;van der&lt;/TD&gt;
&lt;TD&gt;CJ&lt;/TD&gt;
&lt;TD&gt;390&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;919136&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;11/4/1994&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;5/30/1975&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Schoorl&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;HJ&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;390&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So How do I generate the encoding and if required how can I decode it ? Any further help is highly appreciated&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jun 2024 13:09:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/932122#M366696</guid>
      <dc:creator>yashpande</dc:creator>
      <dc:date>2024-06-13T13:09:57Z</dc:date>
    </item>
    <item>
      <title>Re: Generate Random values for encoding</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/932342#M366762</link>
      <description>&lt;P&gt;Since your data are all ASCII characters, I recommend to use Ron.Cody 's method I mentioned before:&lt;BR /&gt;&lt;A href="https://blogs.sas.com/content/sgf/2024/01/10/using-the-bxor-function-to-encode-and-decode-text/" target="_blank" rel="noopener"&gt;https://blogs.sas.com/content/sgf/2024/01/10/using-the-bxor-function-to-encode-and-decode-text/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Firstly, convert all these numeric type variable into character type and using Ron's code to encrypt your data.&lt;/P&gt;
&lt;P&gt;Here is an example how to convert:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc contents data=sashelp.class out=out noprint varnum;
run;

proc sql noprint;
select name into :vnames separated by ' ' from out where TYPE=1;
select catt('char_',name,'=left(vvalue(',name,'));') into :convert separated by ' ' from out where TYPE=1;
quit;
data want;
 set sashelp.class;
 &amp;amp;convert.
 drop &amp;amp;vnames.;
run;&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;After getting WANT dataset , you could feed it into mine or Cody's macro to encrypt or decrypt string.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data encrypt;
 set want;
array x{*} $ _character_;
do j=1 to dim(x);
 do i=1 to lengthn(x{j});
   substr(x{j},i,1)=byte(rank(char(x{j},i)) + mod(i,5));
 end;
end;
 drop j i;
run;
data decrypt;
 set encrypt;
array x{*} $ _character_;
do j=1 to dim(x);
 do i=1 to lengthn(x{j});
   substr(x{j},i,1)=byte(rank(char(x{j},i)) - mod(i,5));
 end;
end;
 drop j i;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And open dataset ENCRYPT and DECRYPT ,check if these are what you are looking for.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1718355146095.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/97433i73C047412E4FB062/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1718355146095.png" alt="Ksharp_0-1718355146095.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Jun 2024 08:52:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generate-Random-values-for-encoding/m-p/932342#M366762</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-06-14T08:52:36Z</dc:date>
    </item>
  </channel>
</rss>

