|
|

10精币
求助下, 各位看下代码, 易语言写法是否能实现这个功能。 如果不支持是否可以 用易语言调用js。
// 辅助函数:8位右旋转
function ror8(val, shift) {
return ((val >>> shift) | (val << (8 - shift))) & 0xFF;
}
// 辅助函数:8位左旋转
function rol8(val, shift) {
return ((val << shift) | (val >>> (8 - shift))) & 0xFF;
}
function calculate() {
let targetSkinId = parseInt(document.getElementById('skinId').value);
if (isNaN(targetSkinId)) return;
// 处理最低位字节
let b = targetSkinId & 0xFF;
// === 逆向推导过程 ===
// 我们要反推 E:
// 1. 逆查表: 找到哪个索引 C 使得 sbox[C] == b
let C = -1;
for(let i=0; i<256; i++) {
if(sbox === b) {
C = i;
break;
}
}
if (C === -1) {
alert("错误:在S盒中未找到对应值,该数值可能无效或算法有误。");
return;
}
// 2. 逆位混合:
let B = ror8(C, 3);
// 3. 逆减法: B = A - 0x62 => A = B + 0x62
let A = (B + 0x62) & 0xFF;
// 4. 逆右旋: A = ror(E, 1) => E = rol(A, 1)
let E = rol8(A, 1);
// 组合成最终 DWORD (小端序)
let result = E + (0x52 << 8) + (0x52 << 16) + (0x52 << 24);
// 显示结果
document.getElementById('output').style.display = 'block';
document.getElementById('decVal').innerText = result;
document.getElementById('hexVal').innerText = "0x" + result.toString(16).toUpperCase().padStart(8, '0');
}
加密.rar
(2.22 KB, 下载次数: 4)
|
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。 友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。 快捷通道:申请荣誉值 →
|