Base58在java程式中應用

2021-08-20 09:10:53 字數 1780 閱讀 4897

不使用"+"和"/"的原因是非字母或數字的字串作為帳號較難被接受。

沒有標點符號,通常不會被從中間分行。

大部分的軟體支援雙擊選擇整個字串。

public class base58 

for (int i = 0; i < alphabet.length; i++)

}public static string encode(byte input)

input = copyofrange(input, 0, input.length);

int zerocount = 0;

while (zerocount < input.length && input[zerocount] == 0)

byte temp = new byte[input.length * 2];

int j = temp.length;

int startat = zerocount;

while (startat < input.length)

temp[--j] = (byte) alphabet[mod];

}while (j < temp.length && temp[j] == alphabet[0])

while (--zerocount >= 0)

byte output = copyofrange(temp, j, temp.length);

return new string(output);

}public static byte decode(string input)

byte input58 = new byte[input.length()];

for (int i = 0; i < input.length(); ++i)

if (digit58 < 0)

input58[i] = (byte) digit58;

}int zerocount = 0;

while (zerocount < input58.length && input58[zerocount] == 0)

byte temp = new byte[input.length()];

int j = temp.length;

int startat = zerocount;

while (startat < input58.length)

temp[--j] = mod;

}while (j < temp.length && temp[j] == 0)

return copyofrange(temp, j - zerocount, temp.length);

}private static byte divmod58(byte number, int startat)

return (byte) remainder;

}private static byte divmod256(byte number58, int startat)

return (byte) remainder;

}private static byte copyofrange(byte source, int from, int to)

}

我用這個來組合加密後的資料,這樣不容易和其他字元混淆

base58.encode(secret.getbytes());
secret是組裝好的string

解密也是同樣:

new string(base58.decode(secret));

base58編碼與解碼實現

base58編碼是位元幣位址生成演算法中的最後乙個步驟。演算法簡單,和上大學時候學過的十進位制轉十六進製制一樣,只不過現在變成了十進位制轉58進製,核心過程就是不斷的除58求餘。下面是go語言的實現過程 func base58encode data byte string bignum.divmod...

Base58編碼的長度是如何計算的?

base58 是由中本聰為bitcoin設計的。相比與base64的字元,他將一些直 來模糊的字元去除了。字元共58個 在一些base58的實現 中,我們往往需要為生成的編碼後的字串預留空間,這是如何計算的呢?例如一段原始碼及注釋 std vectorb58 pend pbegin 138 100 ...

在 Java 中如何進行 BASE64 編碼和解碼

base64 編碼是一種常用的字元編碼,在很多地方都會用到。jdk 中提供了非常方便的 base64encoder 和 base64decoder,用它們可以非常方便的完成基於 base64 的編碼和解碼。下面是本人編的兩個小的函式,分別用於 base64 的編碼和解碼 import sun.mis...