SM2中密钥交换的问题

2 篇文章 0 订阅

SM2中密钥交换的问题

1.字节数组转十六进制字符串(Hex)
public static String HexString(byte[] b) {
        StringBuilder builder = new StringBuilder();
        if (b == null || b.length <= 0){
            return null;
        }
        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());
            builder.append(hex);
        }
        return builder.toString();
    }
2.判断公钥的长度
BC库生成的公钥前面包含有04标志位(解密的时候需要用到),生成的私钥前面偶尔会多加两个00(也是标志位?),记得去掉00。
注:BC库使用的公钥=64个字节+1个字节(04标志位),BC库使用的私钥=32个字节。
通过打印公钥的字节数组也可以发现
转字节数组输出:[4, 48, 112, -33, 39, -123, 26, -81, -104, 100, -2, -36, 79, 33, 63, -41, -39, -123, 65, -116, -40, -76, -15, 113, 105, -118, 117, -66, 69, -105, 95, -115, 33, 107, 7, 36, 31, -18, 38, 67, -13, -123, -15, 22, -37, 37, -83, -98, 32, 66, -94, 28, 1, -115, -4, 126, 58, -42, 71, -109, -46, 91, -39, 13, 27]
转十六进制后
Hex字符串输出:043070DF27851AAF9864FEDC4F213FD7D985418CD8B4F171698A75BE45975F8D216B07241FEE2643F385F116DB25AD9E2042A21C018DFC7E3AD64793D25BD90D1B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值