Since your data are all ASCII characters, I recommend to use Ron.Cody 's method I mentioned before: https://blogs.sas.com/content/sgf/2024/01/10/using-the-bxor-function-to-encode-and-decode-text/
Firstly, convert all these numeric type variable into character type and using Ron's code to encrypt your data.
Here is an example how to convert:
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;
&convert.
drop &vnames.;
run;
After getting WANT dataset , you could feed it into mine or Cody's macro to encrypt or decrypt string.
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;
And open dataset ENCRYPT and DECRYPT ,check if these are what you are looking for.
... View more