关于ETL中对于数字的sha256的加密,需要引用java基础的jar包,一般都是自带的,不需要特别导入,如果java本身没有的话,可以将jar包放到 libext中。
本次加密时,并没有用到外部jar包,所有可以直接导入必要的jar包即可。
最开始是 main 函数,需要从ETL左边的方法中直接点击就可以了,在提示输入代码的地方
/* TODO: Your code here. (See Sample) ,
输入自己的代码 。
比如:
String foobar = get(Fields.In, "sum").getString(r);
//输入前端给的身份证号
foobar = getSHA256(foobar);
//将解析后的身份证号执行 sha256加密。
get(Fields.Out, "result").setValue(r, foobar);
//将加密后的值赋给 输出的字段。
这是输入的和输出的值。
同时,需要在下方的输出字段里,设置需要输出的值。
示例:
import java.security.MessageDigest;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
if (first)
{
first = false;
}
// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
// enough to handle any new fields you are creating in this step.
r = createOutputRow(r, 1);
/* TODO: Your code here. (See Sample)
// Get the value from an input field
String foobar = get(Fields.In, "a_fieldname").getString(r);
foobar += "bar";
// Set a value in a new output field
get(Fields.Out, "output_fieldname").setValue(r, foobar);
*/
String foobar = get(Fields.In, "sum").getString(r);//输入参数
foobar = getSHA256(foobar);
get(Fields.Out, "result").setValue(r, foobar);
// Send the row on to the next step.
putRow(data.outputRowMeta, r);
return true;
}
public static String getSHA256(String str){
MessageDigest messageDigest;
String encodeStr=null;
try{
messageDigest=MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes("UTF-8"));
encodeStr=byte2Hex(messageDigest.digest());
}catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encodeStr;
}
private static String byte2Hex(byte[] bytes){
StringBuffer stringBuffer = new StringBuffer();
String temp=null;
for(int i=0;i<bytes.length;i++){
temp = Integer.toHexString(bytes[i] & 0xFF);
if (temp.length()==1){
stringBuffer.append("0");
}
stringBuffer.append(temp);
}
return stringBuffer.toString();
}