diff options
Diffstat (limited to 'src/tools/hash-text/hash-text.vue')
-rw-r--r-- | src/tools/hash-text/hash-text.vue | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/src/tools/hash-text/hash-text.vue b/src/tools/hash-text/hash-text.vue index 9d9332f..4b7bcf1 100644 --- a/src/tools/hash-text/hash-text.vue +++ b/src/tools/hash-text/hash-text.vue @@ -1,10 +1,34 @@ <template> <div> <n-card> - <n-input v-model:value="clearText" type="textarea" placeholder="Your string..." :autosize="{ minRows: 3 }" /> + <n-input v-model:value="clearText" type="textarea" placeholder="Your string to hash..." rows="3" /> <n-divider /> + <n-form-item label="Digest encoding"> + <n-select + v-model:value="encoding" + :options="[ + { + label: 'Binary (base 2)', + value: 'Bin', + }, + { + label: 'Hexadecimal (base 16)', + value: 'Hex', + }, + { + label: 'Base64 (base 64)', + value: 'Base64', + }, + { + label: 'Base64url (base 64 with url safe chars)', + value: 'Base64url', + }, + ]" + /> + </n-form-item> + <div v-for="algo in algoNames" :key="algo" style="margin: 5px 0"> <n-input-group> <n-input-group-label style="flex: 0 0 120px"> {{ algo }} </n-input-group-label> @@ -16,9 +40,10 @@ </template> <script setup lang="ts"> -import InputCopyable from '../../components/InputCopyable.vue'; +import { enc, lib, MD5, RIPEMD160, SHA1, SHA224, SHA256, SHA3, SHA384, SHA512 } from 'crypto-js'; import { ref } from 'vue'; -import { MD5, SHA1, SHA256, SHA224, SHA512, SHA384, SHA3, RIPEMD160 } from 'crypto-js'; +import InputCopyable from '../../components/InputCopyable.vue'; +import { convertHexToBin } from './hash-text.service'; const algos = { MD5, @@ -32,10 +57,18 @@ const algos = { } as const; type AlgoNames = keyof typeof algos; +type Encoding = keyof typeof enc | 'Bin'; const algoNames = Object.keys(algos) as AlgoNames[]; +const encoding = ref<Encoding>('Hex'); +const clearText = ref(''); + +function formatWithEncoding(words: lib.WordArray, encoding: Encoding) { + if (encoding === 'Bin') { + return convertHexToBin(words.toString(enc.Hex)); + } + + return words.toString(enc[encoding]); +} -const clearText = ref( - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lacus metus blandit dolor lacus natoque ad fusce aliquam velit.', -); -const hashText = (algo: AlgoNames, value: string) => algos[algo](value).toString(); +const hashText = (algo: AlgoNames, value: string) => formatWithEncoding(algos[algo](value), encoding.value); </script> |