zoukankan      html  css  js  c++  java
  • 二维码转账

    最近发现好多的以太坊钱包的转账二维码 扫描出来都是 iban开头的所以小小的研究了一下

    说到IBAN就需要先了解下国际银行帐号(IBAN)

    地址 https://en.wikipedia.org/wiki/International_Bank_Account_Number#Validating_the_IBAN

    生成的地址 例如扫码之后的结果 iban:XE56******************?amount=0&token=ETH

    ?之后的无视掉 前四位XE56其实是一部分 后边的31位是一部分

    后边的31位很好理解 钱包地址的36进制 所以这里主要来说一下前边的XE56怎么来的

    XE56 中的XE其实也是写死的 只有56是计算出来的 好了说了这么多 下边开始开始吧

    上边是维基百科的介绍

    首先先把地址转化为36进制 然后前边拼接商XE00(是零不是O)此处要注意地址转换为36进制之后的位数 不够的在前边补零

    address= XE00******************

    public static String ibanChecksum(String address) {

        //此处方法 是根据OC的转义过来的
    
        String[] ibanLookup = new String[256];
        for (int i = 0; i < 256; i++) {
            ibanLookup[i] = "-";
        }
        for (int i = 0; i < 10; i++) {
            ibanLookup['0' + i] = "" + i;
        }
        for (int i = 0; i < 26; i++) {
            ibanLookup['A' + i] = "" + 10 + i;
        }
    
        //将前四位放到后边
    
        address=address.substring(4,address.length())+"XE00";
        long total = 0;
    
            //将字符转换为数字  在此以后的都是摘自 https://github.com/arturmkrtchyan/iban4j  里的方法  在实际开发中大家可以自己写一下 我懒癌晚期 就直接用别人的了  
    
        for (int i = 0; i < address.length(); i++) {
            final int numericValue = Character.getNumericValue(address.charAt(i));
            if (numericValue < 0 || numericValue > 35) {
                throw new IbanFormatException(IBAN_VALID_CHARACTERS, null, null,
                        address.charAt(i),
                        String.format("Invalid Character[%d] = '%d'", i, numericValue));
            }
            total = (numericValue > 9 ? total * 100 : total * 10) + numericValue;
            if (total > MAX) {
                total = (total % MOD);
            }
        }
        int modResult=(int) (total % MOD);
        int checkDigitIntValue = (98 - modResult);
        final String checkDigit = Integer.toString(checkDigitIntValue);
        return checkDigitIntValue > 9 ? checkDigit : "0" + checkDigit;
    }
  • 相关阅读:
    vs2019 临时下载目录 离线安装 脱机安装
    直膝跳缓解腰椎间盘突出 腰疼 臀部肌肉疼痛
    fullscreen
    ubuntu 18.04 网络图标不见的问题解决方案
    采样率与比特率
    关于git的换行符问题
    在ASP.NET Core中使用EPPlus导入出Excel文件
    .net core 转 excel datatable list<t> 互转 xlsx
    .net core C# DataTable 和List之间相互转换的方法
    C# 的三种序列化方法
  • 原文地址:https://www.cnblogs.com/xiaocongcong888/p/9544468.html
Copyright © 2011-2022 走看看