From d8a4970254ba32db072ff483b5b7560a10f877cc Mon Sep 17 00:00:00 2001 From: liudonghua Date: Thu, 13 Jun 2024 03:09:55 +0000 Subject: [PATCH 1/2] add keyencoding support for encryption --- src/tools/encryption/encryption.vue | 45 +++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/tools/encryption/encryption.vue b/src/tools/encryption/encryption.vue index 2ad47b51..288b572a 100644 --- a/src/tools/encryption/encryption.vue +++ b/src/tools/encryption/encryption.vue @@ -3,16 +3,22 @@ import { AES, RC4, Rabbit, TripleDES, enc } from 'crypto-js'; import { computedCatch } from '@/composable/computed/catchedComputed'; const algos = { AES, TripleDES, Rabbit, RC4 }; +type KeyEncoding = 'Text' | 'Hex'; const cypherInput = ref('Lorem ipsum dolor sit amet'); const cypherAlgo = ref('AES'); const cypherSecret = ref('my secret key'); -const cypherOutput = computed(() => algos[cypherAlgo.value].encrypt(cypherInput.value, cypherSecret.value).toString()); +const cypherSecretEncoding = ref('Text'); +const [cypherOutput, cypherError] = computedCatch(() => algos[cypherAlgo.value].encrypt(cypherInput.value, cypherSecretEncoding.value === 'Text' ? cypherSecret.value : enc.Hex.parse(cypherSecret.value), { iv: enc.Hex.parse('00000000000000000000000000000000') }).toString(), { + defaultValue: '', + defaultErrorMessage: 'Unable to cypher your text', +}); const decryptInput = ref('U2FsdGVkX1/EC3+6P5dbbkZ3e1kQ5o2yzuU0NHTjmrKnLBEwreV489Kr0DIB+uBs'); const decryptAlgo = ref('AES'); const decryptSecret = ref('my secret key'); -const [decryptOutput, decryptError] = computedCatch(() => algos[decryptAlgo.value].decrypt(decryptInput.value, decryptSecret.value).toString(enc.Utf8), { +const decryptSecretEncoding = ref('Text'); +const [decryptOutput, decryptError] = computedCatch(() => algos[decryptAlgo.value].decrypt(decryptInput.value, decryptSecretEncoding.value === 'Text' ? decryptSecret.value : enc.Hex.parse(decryptSecret.value), { iv: enc.Hex.parse('00000000000000000000000000000000') }).toString(enc.Utf8), { defaultValue: '', defaultErrorMessage: 'Unable to decrypt your text', }); @@ -31,6 +37,22 @@ const [decryptOutput, decryptError] = computedCatch(() => algos[decryptAlgo.valu
+ + algos[decryptAlgo.valu />
+ + {{ cypherError }} + algos[decryptAlgo.valu
+ + Date: Thu, 13 Jun 2024 03:33:08 +0000 Subject: [PATCH 2/2] use an empty iv, it's the same as the zero filled previously --- src/tools/encryption/encryption.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/encryption/encryption.vue b/src/tools/encryption/encryption.vue index 288b572a..42113254 100644 --- a/src/tools/encryption/encryption.vue +++ b/src/tools/encryption/encryption.vue @@ -9,7 +9,7 @@ const cypherInput = ref('Lorem ipsum dolor sit amet'); const cypherAlgo = ref('AES'); const cypherSecret = ref('my secret key'); const cypherSecretEncoding = ref('Text'); -const [cypherOutput, cypherError] = computedCatch(() => algos[cypherAlgo.value].encrypt(cypherInput.value, cypherSecretEncoding.value === 'Text' ? cypherSecret.value : enc.Hex.parse(cypherSecret.value), { iv: enc.Hex.parse('00000000000000000000000000000000') }).toString(), { +const [cypherOutput, cypherError] = computedCatch(() => algos[cypherAlgo.value].encrypt(cypherInput.value, cypherSecretEncoding.value === 'Text' ? cypherSecret.value : enc.Hex.parse(cypherSecret.value), { iv: enc.Hex.parse('') }).toString(), { defaultValue: '', defaultErrorMessage: 'Unable to cypher your text', }); @@ -18,7 +18,7 @@ const decryptInput = ref('U2FsdGVkX1/EC3+6P5dbbkZ3e1kQ5o2yzuU0NHTjmrKnLBEwreV489 const decryptAlgo = ref('AES'); const decryptSecret = ref('my secret key'); const decryptSecretEncoding = ref('Text'); -const [decryptOutput, decryptError] = computedCatch(() => algos[decryptAlgo.value].decrypt(decryptInput.value, decryptSecretEncoding.value === 'Text' ? decryptSecret.value : enc.Hex.parse(decryptSecret.value), { iv: enc.Hex.parse('00000000000000000000000000000000') }).toString(enc.Utf8), { +const [decryptOutput, decryptError] = computedCatch(() => algos[decryptAlgo.value].decrypt(decryptInput.value, decryptSecretEncoding.value === 'Text' ? decryptSecret.value : enc.Hex.parse(decryptSecret.value), { iv: enc.Hex.parse('') }).toString(enc.Utf8), { defaultValue: '', defaultErrorMessage: 'Unable to decrypt your text', });