diff options
author | 2022-04-04 00:25:53 +0200 | |
---|---|---|
committer | 2022-04-04 00:25:53 +0200 | |
commit | 0f3b7445ad1f945d9b364476147bf824ac309a6c (patch) | |
tree | f852e67ad2b7c3d9bb291618eeabe974d21115d5 /src | |
parent | 40dec52c8467fd27eb8f3857ed72746ebaa4f509 (diff) | |
download | it-tools-0f3b7445ad1f945d9b364476147bf824ac309a6c.tar.gz it-tools-0f3b7445ad1f945d9b364476147bf824ac309a6c.tar.zst it-tools-0f3b7445ad1f945d9b364476147bf824ac309a6c.zip |
feat(tool): text hash
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/hash-text/hash-text.vue | 72 | ||||
-rw-r--r-- | src/tools/hash-text/index.ts | 11 | ||||
-rw-r--r-- | src/tools/index.ts | 3 |
3 files changed, 85 insertions, 1 deletions
diff --git a/src/tools/hash-text/hash-text.vue b/src/tools/hash-text/hash-text.vue new file mode 100644 index 0000000..30a97b8 --- /dev/null +++ b/src/tools/hash-text/hash-text.vue @@ -0,0 +1,72 @@ +<template> + <div> + <n-card> + <n-input + v-model:value="clearText" + type="textarea" + placeholder="Your string..." + :autosize="{ minRows: 3 }" + /> + <br /> + <br /> + <n-select + v-model:value="algo" + :options="Object.keys(algos).map(label => ({ label, value: label }))" + /> + + <br /> + <n-input + style="text-align: center;" + v-model:value="hashedText" + type="textarea" + placeholder="Your string hash" + :autosize="{ minRows: 1 }" + readonly + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false" + /> + <br /> + <br /> + <n-space justify="center"> + <n-button @click="copy" secondary autofocus>Copy</n-button> + </n-space> + </n-card> + </div> +</template> + +<script setup lang="ts"> +import { useCopy } from '@/composable/copy'; +import { ref, computed } from 'vue' +import { + MD5, + SHA1, + SHA256, + SHA224, + SHA512, + SHA384, + SHA3, + RIPEMD160, +} from 'crypto-js' + +const algos = { + MD5, + SHA1, + SHA256, + SHA224, + SHA512, + SHA384, + SHA3, + RIPEMD160, +} as const; + +const clearText = ref('Lorem ipsum') +const hashedText = computed(() => algos[algo.value](clearText.value)) +const algo = ref<keyof typeof algos>('SHA256') + +const { copy } = useCopy({ source: hashedText, text: 'Token copied to the clipboard' }) +</script> + +<style lang="scss" scoped> +</style>
\ No newline at end of file diff --git a/src/tools/hash-text/index.ts b/src/tools/hash-text/index.ts new file mode 100644 index 0000000..fbc9a2c --- /dev/null +++ b/src/tools/hash-text/index.ts @@ -0,0 +1,11 @@ +import { EyeOff } from '@vicons/tabler'; +import type { ITool } from '../Tool'; + +export const tool: ITool = { + name: 'Hash text', + path: '/hash-text', + description: 'Hash a text string using the function you need : MD5, SHA1, SHA256, SHA224, SHA512, SHA384, SHA3 or RIPEMD160', + keywords: ['hash', 'digest', 'crypto', 'security', 'text', 'MD5', 'SHA1', 'SHA256', 'SHA224', 'SHA512', 'SHA384', 'SHA3', 'RIPEMD160'], + component: () => import('./hash-text.vue'), + icon: EyeOff, +}; diff --git a/src/tools/index.ts b/src/tools/index.ts index d7884d2..431cbb2 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -2,12 +2,13 @@ import { LockOpen } from '@vicons/tabler'; import type { ToolCategory } from './Tool'; import { tool as tokenGenerator } from './token-generator'; +import { tool as hashText } from './hash-text'; export const toolsByCategory: ToolCategory[] = [ { name: 'Crypto', icon: LockOpen, - components: [tokenGenerator], + components: [tokenGenerator, hashText], }, ]; |