知乎专栏 |
什么是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");