知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
什麼是Base58?
<?php $number = '123456789009876543211234567890'; $result = base58_encode($number); echo('Encoded: ' . $result . '<br>'); echo('Decoded: ' . base58_decode($result) . '<br>'); function base58_encode($input) { $alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'; $base_count = strval(strlen($alphabet)); $encoded = ''; while (floatval($input) >= floatval($base_count)) { $div = bcdiv($input, $base_count); $mod = bcmod($input, $base_count); $encoded = substr($alphabet, intval($mod), 1) . $encoded; $input = $div; } if (floatval($input) > 0) { $encoded = substr($alphabet, intval($input), 1) . $encoded; } return($encoded); } function base58_decode($input) { $alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'; $base_count = strval(strlen($alphabet)); $decoded = strval(0); $multi = strval(1); while (strlen($input) > 0) { $digit = substr($input, strlen($input) - 1); $decoded = bcadd($decoded, bcmul($multi, strval(strpos($alphabet, $digit)))); $multi = bcmul($multi, $base_count); $input = substr($input, 0, strlen($input) - 1); } return($decoded); }
Maven 檔案添加下面代碼
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.github.multiformats</groupId> <artifactId>java-multihash</artifactId> <version>$LATEST_VERSION</version> </dependency> </dependencies>
import io.ipfs.multibase.Base58; Base58.encode(string); Base58.decode(encrypted) Multihash m = Multihash.fromBase58("QmatmE9msSfkKxoffpHwNLNKgwZG8eT9Bud6YoPab52vpy");