function desDecrypt(decodeTxt, key) {
key =
key.length >= 8 ? key.slice(0, 8) : key.concat('0'.repeat(8 - key.length))
key = Buffer.from(key)
const decipher = crypto.createDecipheriv('des-ecb', key, null)
decipher.setAutoPadding(true)
let decryptedData = decipher.update(decodeTxt, 'hex', 'utf-8')
decryptedData += decipher.final('utf-8')
return decryptedData
}
function desEncrypt(encodeText, key) {
key = Buffer.from(key)
const decipher = crypto.createCipheriv('des-ecb', key, null)
let encryptedData: any = decipher.update(encodeText, 'utf-8', 'hex')
encryptedData += decipher.final('hex')
return encryptedData
}
import CryptoJS from 'crypto-js'
export async function desDecrypt(encryptedData, key, iv = null) {
try {
key = CryptoJS.enc.Utf8.parse(key)
const encryptedText = CryptoJS.enc.Hex.parse(encryptedData)
const decrypted = CryptoJS.DES.decrypt({ ciphertext: encryptedText }, key, {
mode: CryptoJS.mode.ECB,
})
const decryptedText = decrypted.toString(CryptoJS.enc.Utf8)
return decryptedText
} catch (error) {
console.error('Error decrypting error:', error.message)
}
}
js浏览器中使用Buffer如下:
const encoder = new TextEncoder()
let text = encoder.encode('text')
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
public class DESEncryption {
public static void main(String[] args) throws Exception {
String key = "12345678"; // 8-character key
String iv = "12345678"; // 8-character IV
String plaintext = "Hello, DES!";
byte[] encrypted = encrypt(plaintext, key, iv);
System.out.println("Encrypted Text: " + bytesToHex(encrypted));
}
public static byte[] encrypt(String plaintext, String key, String iv) throws Exception {
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
SecretKey secretKey = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec(key.getBytes("UTF-8")));
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
return cipher.doFinal(plaintext.getBytes("UTF-8"));
}
private static String bytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte b : bytes) {
result.append(String.format("%02x", b));
}
return result.toString();
}
}
decryptAes(encryptedData, key, iv: any = '') {
iv = Buffer.from(key)
key = Buffer.from(key)
const decipher = createDecipheriv('aes-128-cbc', key, iv)
decipher.setAutoPadding(true)
let decrypted = decipher.update(encryptedData, 'hex', 'utf-8')
decrypted += decipher.final('utf-8')
return decrypted
return this.restoreData(decrypted.toString()) // 删除偏移位置
}
aesEncrypt(encodeText, key) {
key = Buffer.from(key)
const decipher = createCipheriv('aes-128-cbc', key, key)
let encryptedData: any = decipher.update(encodeText, 'utf-8', 'hex')
encryptedData += decipher.final('hex')
return encryptedData
}
import CryptoJS from 'crypto-js'
const iv = '你的密钥字符串'
export const encrypt = (value, key = iv) =>
CryptoJS.AES.encrypt(value, key, { iv }).toString()
export const decrypt = (value, key = iv) =>
CryptoJS.AES.decrypt(value, key, { iv }).toString(CryptoJS.enc.Utf8)
import { encrypt, decrypt } from '@/crypto.js'
let data = {
//需要加密的内容
id: '',
token: ''
}
let setenCodeStr = encrypt(JSON.stringify(data), 'ueseInfo')
let getDecrypt = JSON.parse(decrypt(data.enCodeStr, 'ueseInfo'))
// 打开窗口到指定位置
let openedWindow
function openWin(
url = 'http://xxxxx?info=setenCodeStr',
name = '',
iWidth = 560,
iHeight = 579
) {
let iTop = window.screen.availHeight - 30 - iHeight - 50
let iLeft = window.screen.availWidth - 10 - iWidth - 30
openedWindow = window.open(
url,
name,
'height=' +
iHeight +
',innerHeight= ' +
iHeight +
',width=' +
iWidth +
',innerWidth=' +
iWidth +
',top=' +
iTop +
',left=' +
iLeft +
',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no'
)
window.localStorage.setItem('openedWindow', openedWindow)
}
let url = 'U2FsdGVkX19Fo64gLtxluFe4WE6bhvOxZ+klqYm1+BhkoBC49TgQfPua4K3MgRgPEbYa/DMnAnR9DV8PRBysyQ=='
let str = encodeURI(url) //传参用
str=str.replace(/\%/g,'%25').replace(/\#/g,'%23').replace(/\+/g,'%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F').replace(' ','+').replace(/\?/g,'%3F').replace(/\&/g,'%26').replace(/\=/g,'%3D') // url中特殊字符处理
window.location.href = `http://xxxxx?info=${str}`
decodeURI(route.query.info) //取参数
1. + URL中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL中指定的参数间的分隔符 %26
8. = URL中指定参数的值 %3D