我是靠谱客的博主 机灵路人,最近开发中收集的这篇文章主要介绍SM2中密钥交换的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是机灵路人为你收集整理的SM2中密钥交换的问题的全部内容,希望文章能够帮你解决SM2中密钥交换的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部