使用 Optim Data Privacy 解决方案在开放平台上定制数据转换
2010-02-04 00:00:00 来源:WEB开发网程序进行初始化和条件判断之后,首先需要获取源数据列的数据。主要代码如下:
// 得到源数据列的指针
pCol = &(pSrcColList->Col[ pInputParms->DestColIndex ]);
rc = (*pInputParms->pPSTGetColValue)// 获取源数据列数据
(pCol->hCol, // 源数据列的句柄
PST_C_CHAR, // 指明列的数据类型
0, //Precision,DECIMAL 数据类型专用,这里不需要
0, //Scale,DECIMAL 数据类型专用,这里不需要
&ID, // 保存数据的变量地址
sizeof(ID), // 变量的大小
&IndVar ); // 数据是否为空的标志,-1 为空,不空则为 0
switch ( rc )
{
case PSTEXIT_SUCCESS: // 成功
case PSTEXIT_TRUNC_WARNING: // 含有警告信息,但仍然可以继续
break;
default:
return( PST_CM_EXIT_ABORT_PROCESS );// 发生严重错误,数据转换终止
}
在获取了身份证数据之后,我们进行转换。变换规则为:
利用身份证第后 4 位信息座位种子生成随机数 rand;
身份证头两位的省份信息由 rand%31 决定,在省份列表中选取;
生日年份信息由 rand%30+70 决定,区间为 1970~2000;
生日月份信息由 rand%12+1 决定,区间为 1~12;
身份证的最后一位校验位,由以下规则计算得出:
计算前 17 位的加权和 S,S = Ai * Wi, i = 2, ... , 18,其中 Ai 为第 i 位的身份证号码数值,Wi 为第 i 位的权重,Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
更多精彩
赞助商链接