java :关于ETL对sha256 的加密算法

关于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();
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值