Skip to content

Commit 5aff8ec

Browse files
authored
V0.5.0 (#6)
* Hash module add algorithm: crc, blake2b * Add pbkdf2 module * Add case module * Add usage module * Improve test case
1 parent 1043dc8 commit 5aff8ec

19 files changed

+1474
-490
lines changed

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,9 @@ sha3 = "0.8.2"
2929
ripemd160 = "0.8.0"
3030
escaper = "0.1.0"
3131
regex = "1.3.1"
32+
linked-hash-map = "0.5.2"
33+
prettytable-rs = "^0.8"
34+
madato = "0.5.3"
35+
crc = "1.8.1"
36+
heck = "0.3.1"
37+
rust-crypto = "0.2.36"

README.md

Lines changed: 59 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,69 @@
77

88
## Table of Contents
99

10+
- [Description](#description)
1011
- [Usage](#usage)
11-
- [Tips](#tips)
12+
- [Tips](#tips)
1213
- [Installation](#installation)
1314

15+
## Description
16+
17+
Now `dtool` supports:
18+
19+
- Hex / UTF-8 string conversion
20+
- Hex / binary conversion
21+
- Timestamp / date conversion
22+
- Number 2/8/10/16 base conversion
23+
- Hex / base58 conversion
24+
- Hex / base58check conversion
25+
- Hex / base64 conversion
26+
- URL encode / decode
27+
- Number codec
28+
- Hash (MD5, SHA-1, SHA-2, SHA-3, RIPEMD, CRC, Blake2b)
29+
- UTF-8 string / unicode conversion
30+
- HTML entity encode / decode
31+
- Regex match
32+
- Pbkdf2
33+
- Case conversion (upper, lower, title, camel, pascal, snake, shouty snake, kebab)
34+
1435
## Usage
15-
| Sub command | Description | Examples | Since |
16-
| ------------- | :------------- | ------------ | --- |
17-
| h2s | Convert hex to UTF-8 string | $ dtool h2s 0x61626364 <br> abcd | v0.1.0 |
18-
| s2h | Convert UTF-8 string to hex | $ dtool s2h abcd <br> 0x61626364 | v0.1.0 |
19-
| h2b | Convert hex to binary | $ dtool h2b 0x61626364 > pic.jpg | v0.3.0 |
20-
| b2h | Convert binary to hex | $ cat pic.jpg &#x7C; dtool b2h <br> 0x61626364 | v0.3.0 |
21-
| ts2d | Convert timestamp to date | $ dtool ts2d 10000 <br> 1970-01-01 10:46:40 <br> $ dtool ts2d -z0 10000 <br> 1970-01-01 02:46:40 | v0.1.0 |
22-
| d2ts | Convert date to timestamp | $ dtool d2ts '1970-01-01 10:46:40' <br> 10000 <br> $ dtool d2ts -z0 '1970-01-01 02:46:40' <br> 10000 <br> $ date -R &#x7C; dtool d2ts <br> 1577094086 <br> $ date --rfc-3339=seconds &#x7C; sed 's/ /T/' &#x7C; dtool d2ts <br> 1577094086 | v0.1.0 |
23-
| ns | Number system | $ dtool ns 256 <br> 256 <br> 0b100000000 <br> 0o400 <br> 0x100 <br> | v0.1.0 |
24-
| h2b58 | Convert hex to base58 | $ dtool h2b58 0x0075774f5d9963c021009a58d7d2d8e83771dd6c7a <br> 12dvBhvPEPniQmBmgvj4qpJEodT7P | v0.1.0 |
25-
| h2b58c | Convert hex to base58 check | $ dtool h2b58c 0x0075774f5d9963c021009a58d7d2d8e83771dd6c7a <br> 1Bi6zFVNtntP5MtDraNrAD7e469ifsQMwF | v0.1.0 |
26-
| b582h | Convert base58 to hex | $ dtool b582h 12dvBhvPEPniQmBmgvj4qpJEodT7P <br> 0x0075774f5d9963c021009a58d7d2d8e83771dd6c7a | v0.1.0 |
27-
| b58c2h | Convert base58 check to hex | $ dtool b58c2h 1Bi6zFVNtntP5MtDraNrAD7e469ifsQMwF <br> 0x0075774f5d9963c021009a58d7d2d8e83771dd6c7a | v0.1.0 |
28-
| h2b64 | Convert hex to base64 | $ dtool h2b64 0x616263 <br> YWJj | v0.1.0 |
29-
| b642h | Convert base64 to hex | $ dtool b642h YWJj <br> 0x616263 | v0.1.0 |
30-
| ue | URL encode | $ dtool ue a+b <br> a%2Bb | v0.1.0 |
31-
| ud | URL decode | $ dtool ud a%2Bb <br> a+b | v0.1.0 |
32-
| ne | Number encode | $ dtool ne -tu8 1 <br> 0x01 <br> $ dtool ne -tu16 1 <br> 0x0100 <br> $ dtool ne -tu32 1 <br> 0x01000000 <br> $ dtool ne -tu64 1 <br> 0x0100000000000000 <br> $ dtool ne -tu128 1 <br> 0x01000000000000000000000000000000 <br> $ dtool ne -tc 6 <br> 0x18 <br> dtool ne -tc 251 <br> 0xed03 | v0.1.0 |
33-
| nd | Number decode | $ dtool nd -tu8 0x01 <br> 1 <br> $ dtool nd -tu16 0x0100 <br> 1 <br> $ dtool nd -tu32 0x01000000 <br> 1 <br> $ dtool nd -tu64 0x0100000000000000 <br> 1 <br> $ dtool nd -tu128 0x01000000000000000000000000000000 <br> 1 <br> $ dtool nd -tc 0x18 <br> 6 <br> $ dtool nd -tc 0xed03 <br> 251 | v0.1.0 |
34-
| hash | Convert hex to MD5 | $ dtool hash -a md5 0x616263 <br> 0x900150983cd24fb0d6963f7d28e17f72 | v0.2.0 |
35-
| hash | Convert hex to SHA-1 | $ dtool hash -a sha1 0x616263 <br> 0xa9993e364706816aba3e25717850c26c9cd0d89d | v0.2.0 |
36-
| hash | Convert hex to SHA-2 224 | $ dtool hash -a sha2_224 0x616263 <br> 0x23097d223405d8228642a477bda255b32aadbce4\ <br> bda0b3f7e36c9da7 | v0.2.0 |
37-
| hash | Convert hex to SHA-2 256 | $ dtool hash -a sha2_256 0x616263 <br> 0xba7816bf8f01cfea414140de5dae2223b00361a3\ <br> 96177a9cb410ff61f20015ad | v0.2.0 |
38-
| hash | Convert hex to SHA-2 384 | $ dtool hash -a sha2_384 0x616263 <br> 0xcb00753f45a35e8bb5a03d699ac65007272c32ab\ <br> 0eded1631a8b605a43ff5bed8086072ba1e7cc23\ <br> 58baeca134c825a7 | v0.2.0 |
39-
| hash | Convert hex to SHA-2 512 | $ dtool hash -a sha2_512 0x616263 <br> 0xddaf35a193617abacc417349ae20413112e6fa4e\ <br> 89a97ea20a9eeee64b55d39a2192992a274fc1a8\ <br> 36ba3c23a3feebbd454d4423643ce80e2a9ac94f\ <br> a54ca49f | v0.2.0 |
40-
| hash | Convert hex to SHA-2 512 <br> truncate 224 | $ dtool hash -a sha2_512_224 0x616263 <br> 0x4634270f707b6a54daae7530460842e20e37ed26\ <br> 5ceee9a43e8924aa | v0.2.0 |
41-
| hash | Convert hex to SHA-2 512 <br> truncate 256 | $ dtool hash -a sha2_512_256 0x616263 <br> 0x53048e2681941ef99b2e29b76b4c7dabe4c2d0c6\ <br> 34fc6d46e0e2f13107e7af23 | v0.2.0 |
42-
| hash | Convert hex to SHA-3 224 | $ dtool hash -a sha3_224 0x616263 <br> 0xe642824c3f8cf24ad09234ee7d3c766fc9a3a516\ <br> 8d0c94ad73b46fdf | v0.2.0 |
43-
| hash | Convert hex to SHA-3 256 | $ dtool hash -a sha3_256 0x616263 <br> 0x3a985da74fe225b2045c172d6bd390bd855f086e\ <br> 3e9d525b46bfe24511431532 | v0.2.0 |
44-
| hash | Convert hex to SHA-3 384 | $ dtool hash -a sha3_384 0x616263 <br> 0xec01498288516fc926459f58e2c6ad8df9b473cb\ <br> 0fc08c2596da7cf0e49be4b298d88cea927ac7f5\ <br> 39f1edf228376d25 | v0.2.0 |
45-
| hash | Convert hex to SHA-3 512 | $ dtool hash -a sha3_512 0x616263 <br> 0xb751850b1a57168a5693cd924b6b096e08f62182\ <br> 7444f70d884f5d0240d2712e10e116e9192af3c9\ <br> 1a7ec57647e3934057340b4cf408d5a56592f827\ <br> 4eec53f0 | v0.2.0 |
46-
| hash | Convert hex to SHA-3 <br> keccak 224 | $ dtool hash -a sha3_k_224 0x616263 <br> 0xc30411768506ebe1c2871b1ee2e87d38df342317\ <br> 300a9b97a95ec6a8 | v0.2.0 |
47-
| hash | Convert hex to SHA-3 <br> keccak 256 | $ dtool hash -a sha3_k_256 0x616263 <br> 0x4e03657aea45a94fc7d47ba826c8d667c0d1e6e3\ <br> 3a64a036ec44f58fa12d6c45 | v0.2.0 |
48-
| hash | Convert hex to SHA-3 <br> keccak 384 | $ dtool hash -a sha3_k_384 0x616263 <br> 0xf7df1165f033337be098e7d288ad6a2f74409d7a\ <br> 60b49c36642218de161b1f99f8c681e4afaf31a3\ <br> 4db29fb763e3c28e | v0.2.0 |
49-
| hash | Convert hex to SHA-3 <br> keccak 512 | $ dtool hash -a sha3_k_512 0x616263 <br> 0x18587dc2ea106b9a1563e32b3312421ca164c7f1\ <br> f07bc922a9c83d77cea3a1e5d0c6991073902537\ <br> 2dc14ac9642629379540c17e2a65b19d77aa511a\ <br> 9d00bb96 | v0.2.0 |
50-
| hash | Convert hex to RIPEMD-160 | $ dtool hash -a ripemd_160 0x616263 <br> 0x8eb208f7e05d987a9b044a8e98c6b087f15a0bfc | v0.2.0 |
51-
| s2u | Convert UTF-8 String to <br> unicode | $ dtool s2u 💯 <br> \u1f4af <br> $ dtool s2u 💯 -f html <br> \&#x1f4af; <br> $ dtool s2u 💯 -f html_d <br> \&#128175; <br> $ dtool s2u 💯 -f rust <br> \u{1f4af} | v0.3.0 |
52-
| u2s | Convert unicode to <br> UTF-8 string | $ dtool u2s '\u1f4af' <br> 💯 <br> $ dtool u2s '\&#x1f4af;' <br> 💯 <br> $ dtool u2s '\&#128175;' <br> 💯 <br> $ dtool u2s '\u{1f4af}' <br> 💯 | v0.3.0 |
53-
| he | HTML entity encode | $ dtool he &lt;b&gt; <br> &amp;lt;b&amp;gt; | v0.4.0 |
54-
| hd | HTML entity decode | $ dtool hd &amp;lt;b&amp;gt; <br> &lt;b&gt; | v0.4.0 |
55-
| re | Regex match | $ dtool re -p 'a(.)c' abcadc <br> abc <br> &nbsp;&nbsp;&nbsp;&nbsp; group#1: b <br> adc <br> &nbsp;&nbsp;&nbsp;&nbsp; group#1: d | v0.4.0 |
36+
37+
`dtool` does different works by different sub commands:
38+
39+
|Sub command| Desc | Example | Remark |Since |
40+
|-----------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------|------|
41+
| h2s |Convert hex to UTF-8 string| $ dtool h2s 0x61626364<br>abcd | |v0.1.0|
42+
| s2h |Convert UTF-8 string to hex| $ dtool s2h abcd<br>0x61626364 | |v0.1.0|
43+
| ... |...| ... | |...|
44+
45+
[View full usage document](./docs/Usage.md)
46+
47+
* Besides the sub command `help`, `dtool` provides a new sub command `usage` to show examples:
48+
49+
```bash
50+
$ dtool usage
51+
Usage
52+
53+
----------------------------------------------------------------------------------
54+
Sub command Desc Example Remark Since
55+
==================================================================================
56+
h2s Convert hex to UTF-8 string $ dtool h2s 0x61626364 v0.1.0
57+
abcd
58+
----------------------------------------------------------------------------------
59+
...
60+
```
61+
62+
* You can search usage with a keyword:
63+
```bash
64+
$ dtool usage -s md5
65+
------------------------------------------------------------------------------
66+
Sub command Desc Example Remark Since
67+
==============================================================================
68+
hash Hex to hash $ dtool hash -a md5 0x616263 MD5 v0.2.0
69+
0x900150983cd24fb0d6963f7d28e17f72
70+
------------------------------------------------------------------------------
71+
72+
```
5673

5774
## Tips
5875

0 commit comments

Comments
 (0)