| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // 测试加密功能与后端的兼容性
- const CryptoJS = require('crypto-js');
- // 模拟登录凭据
- const credentials = {
- username: 'testuser',
- password: 'testpass'
- };
- console.log('原始凭据:', JSON.stringify(credentials));
- // 使用当前前端的加密方法
- const plainText = JSON.stringify(credentials);
- const secretKey = 'MyDifficultPassw';
- const encrypted = CryptoJS.AES.encrypt(plainText, secretKey);
- const base64String = encrypted.toString();
- console.log('加密后的完整字符串:', base64String);
- console.log('加密后的字符串长度:', base64String.length);
- // 转换为Base64URL格式(后端期望的格式)
- let base64UrlString = base64String.replace(/\+/g, '-').replace(/\//g, '_');
- console.log('Base64URL格式字符串:', base64UrlString);
- console.log('Base64URL格式字符串长度:', base64UrlString.length);
- // 测试解密以验证加密是否正确
- try {
- const decryptedBytes = CryptoJS.AES.decrypt(base64String, secretKey);
- const decryptedData = decryptedBytes.toString(CryptoJS.enc.Utf8);
- console.log('解密后数据:', decryptedData);
- console.log('解密是否成功:', JSON.stringify(credentials) === decryptedData);
- } catch (error) {
- console.error('解密失败:', error);
- }
- // 模拟后端解密逻辑的处理步骤
- console.log('\n--- 模拟后端处理 ---');
- // 1. 后端接收到Base64URL格式
- const receivedString = base64UrlString;
- console.log('后端接收到的字符串:', receivedString);
- // 2. 后端转换回标准Base64格式
- const standardBase64 = receivedString.replace(/-/g, '+').replace(/_/g, '/');
- console.log('转换回标准Base64格式:', standardBase64);
- // 3. 确保适当的填充
- let paddedBase64 = standardBase64;
- const paddingNeeded = (4 - (standardBase64.length % 4)) % 4;
- for (let i = 0; i < paddingNeeded; i++) {
- paddedBase64 += '=';
- }
- console.log('填充后的Base64格式:', paddedBase64);
- // 4. 尝试解密
- try {
- const decrypted = CryptoJS.AES.decrypt(paddedBase64, secretKey);
- const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
- console.log('后端解密结果:', decryptedText);
- console.log('后端解密是否成功:', JSON.stringify(credentials) === decryptedText);
- } catch (error) {
- console.error('后端解密失败:', error);
- }
|