- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SAS 中的客户数据处理敏感的客户身份信息。挑战在于以保留数字/字母/字母数字的方式屏蔽该字段。我找到了一种在 SAS(BXOR、BOR、BAND)中使用按位函数的方法,但输出中充满了 SAS 无法处理/排序/合并等的特殊字符。
我也想过根据 key 对字段本身进行加扰,但一直没能看透。以下是挑战:
1)它必须是基于 key 的
2) 必须是可逆的。
3) 掩码/加扰字段只能是数字/字母/字母数字,以便可以在 SAS 中使用。
4) 要屏蔽的字段既有字母也有数字,但长度各不相同,并且有数百万次观察。
关于如何实现这种掩蔽/加扰的任何提示都将不胜感激:(
最佳答案
这是一个简单的基于 key 的解决方案。我在这里介绍数据步骤的解决方案,然后会稍微介绍一个 FCMP 版本。我将所有内容都保留在 48 到 127 的范围内(数字、字母和常见字符,例如 @ > < 等);这不是完全字母数字,但我无法想象为什么在这种情况下会很重要。您可以使用相同的方法将其进一步减少为真正的字母数字,但它会使 key 变得更糟(只有 62 个值)并且使用起来很笨拙(因为您有 3 个不连续的范围)。
data construct_key;
length keystr $1500;
do _t = 1 to 1500;
_rannum = ceil(ranuni(7)*80);
*if _rannum=12 then _rannum=-15;
substr(keystr,_t,1)=byte(47+_rannum);
end;
call symput('keystr',keystr);
run;
%put %bquote(&keystr);
data encrypted;
set sashelp.class;
retain key "&keystr";
length name_encrypt $30;
do _t = 1 to length(name);
substr(name_encrypt,_t,1) = byte(mod(rank(substr(name,_t,1)) + rank(substr(key,1,1))-94,80)+47);
key = substr(key,2);
end;
keep name:;
run;
data unencrypted;
set encrypted;
retain key "&keystr";
length name_unenc $30;
do _t = 1 to length(name_encrypt);
substr(name_unenc,_t,1) = byte(
mod(80+rank(substr(name_encrypt,_t,1)) - rank(substr(key,1,1)),80)
+47);
key = substr(key,2);
end;
run;
%let keylength=5;
%let seed=15;
proc fcmp outlib=work.funcs.test;
subroutine encrypt(value $,key $);
length key $&keylength.;
outargs value,key;
do _t = 1 to lengthc(value);
substr(value,_t,1) = byte(mod(rank(substr(value,_t,1)) + rank(substr(key,1,1))-62,96)+31);
key = substr(key,2)||substr(key,1,1);
end;
endsub;
subroutine unencrypt(value $,key $);
length key $&keylength.;
outargs value,key;
do _t = 1 to lengthc(value);
substr(value,_t,1) = byte(mod(96+rank(substr(value,_t,1)) - rank(substr(key,1,1)),96)+31);
key = substr(key,2)||substr(key,1,1);
end;
endsub;
subroutine gen_key(seed,keystr $);
outargs keystr;
length keystr $&keylength.;
do _t = 1 to &keylength.;
_rannum = ceil(ranuni(seed)*80);
substr(keystr,_t,1)=byte(47+_rannum);
end;
endsub;
quit;
options cmplib=work.funcs;
data encrypted;
set sashelp.class;
length key $&keylength.;
retain key ' '; *the missing is to avoid the uninitialized variable warning;
if _n_ = 1 then call gen_key(&seed,key);
call encrypt(name,key);
drop key;
run;
data unencrypted;
set encrypted;
length key $&keylength.;
retain key ' ';
if _n_ = 1 then call gen_key(&seed,key);
call unencrypt(name,key);
run;
关于encryption - SAS : Scrambling Sensitive observations at character level 中的数据屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582519/
我目前有一个具有分组功能的网格,可以从固定存储中获取数据: Ext.define('YUK.store.FakePendingDocs', { extend: 'Ext.data.Store'
我目前有一个具有分组功能的网格,可以从固定存储中获取数据: Ext.define('YUK.store.FakePendingDocs', { extend: 'Ext.data.Store'
大家好,我的程序无法将用户的猜测与从文件中读取的原始单词进行比较。我知道这有很多问题,目前还不太漂亮,但任何帮助将不胜感激。基本上,类 userGuess 应该从文件“Words.txt”中读取一个随
我最近一直在从事一个项目,其中包括 Rubik's Cube scramble 生成器。基本上,该程序应该生成并显示随机的立方体符号,以便用户可以跟随每一步移动并获得一个相当困惑的立方体。符号包括“R
我正在尝试解决以下任务: Complete the function scramble(str1, str2) that returns true if a portion of str1 chara
我正在尝试使用 javascript 创建一个简单的 slider 游戏。这是一个简单的 4 x 4 数字 slider 游戏,每个按钮都标记为 1-15,最后一个 block 是空白 block 。
是否可以在 SQLServer 2008 R2 中混淆或打乱列,而不必使用加密或一些执行子字符串的低效定制函数? 最佳答案 为什么不在您的应用程序中使用加密/散列/编码并将结果发布到 SQL 中?这是
我正在尝试在我的网站上重现 google+ 的滚动条。由于我有时无法弄清楚的原因,此滚动条的外观困惑。乱码是指滚动条是多色的,有一条黑线横跨它,并且 scrollbar-thumb 不可见。这是向您展
我正在使用 SAS 中的客户数据处理敏感的客户身份信息。挑战在于以保留数字/字母/字母数字的方式屏蔽该字段。我找到了一种在 SAS(BXOR、BOR、BAND)中使用按位函数的方法,但输出中充满了 S
翻译工作正常,直到我尝试翻译占位符: 然后我看到编码的文本: 代码示例: http://jsfiddle.net/eq4bq0mL/5/ 这与 sanitizer 有关吗?有什么解决办法吗? 更新
我在使用 Retrofit 从 url 加载 XML 提要时遇到问题。 给定一个明确返回 xml 提要 f.e 的动态 url:https://anchor.fm/s/53faae8/podcast/
我是一名优秀的程序员,十分优秀!