生成16位、8位的pinblock
引言
最近在对接某金融行业的改造需要生成国密的pinblock,网上找不到生成16位的pinblock的实现。只有pinblock8位的生成, 基于此,稍作修改,并增加了pinblock16位生成。分别可以生成8位的pinblock和16位的pinblock,此代码的实现使用java语言实现。
废话不多上直接上代码
代码
import java.util.Arrays;
/**
*
* @Package: PACKAGE_NAME
* @Description: for pinblock
* @Author: syouya.shiraki
* @CreateDate: 2020/5/21 0021 16:23
* @UpdateDate: 2020/5/21 0021 16:23
* @UpdateRemark: The modified content
* @Version: 1.0
**/
public class PIN {
public static void printHexString(String hint, byte[] b) {
System.out.print(hint);
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}
/**
* transfer byte to hex string
* @param b
* @return
*/
public static String Bytes2HexString(byte[] b) {
String ret = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
return ret;
}