EOS密钥生成方法

/ EOSJava区块链 / 0 条评论 / 1930浏览

例: 1 生成一个标准私钥:8ec380ac422ab3ef3a9bcfcf7a0f3583cc50217cb73f7d4a1b610818c7423fc6 (可以为任意字符)

2 先进行一次SHA256 得到ea0b08029e6130944c490c03d8ea7b99fda273bb45bbae183950b10597e5f87b

3 在前面加上 EOS固定前缀80 得到80ea0b08029e6130944c490c03d8ea7b99fda273bb45bbae183950b10597e5f87b

4 将结果转为bytes数组,再进行两次SHA256

第一次得到45a27be6e11733ba18f66a19990835aa3426fe32ede8236a62c1770587def41a

第二次得到ae78c0e13edfa757245a22f5b401839c6120f796eb6704859a6b677d85b580f2

取第二次结果得前面8位ae78c0e1

5 将步骤3得到的结果80ea0b08029e6130944c490c03d8ea7b99fda273bb45bbae183950b10597e5f87b拼接上步骤4得到的结果ae78c0e1 合成新的私钥80ea0b08029e6130944c490c03d8ea7b99fda273bb45bbae183950b10597e5f87bae78c0e1

6 将上面的结果通过HEX进行一次Base58加密 得到5KbMu3dLi38zNYPkkBwiixYQzYaBMKXT8VBv44UGRrN7HAHQ2xG 这个就是EOS的标准密钥

源码

public static String seedPrivate(String seed) {
        if (seed != null && seed.length() != 0) {
            byte[] a = new byte[]{-128};
            byte[] b = (new BigInteger(Sha.SHA256(seed))).toByteArray();
            byte[] private_key = ByteUtils.concat(a, b);
            byte[] checksum = Sha.SHA256(private_key);
            checksum = Sha.SHA256(checksum);
            byte[] check = ByteUtils.copy(checksum, 0, 4);
            byte[] pk = ByteUtils.concat(private_key, check);
            return Base58.encode(pk);
        } else {
            throw new EException("args_empty", "args is empty");
        }
    }