Files
ST-Amily2-Chat-Optimisation/utils/config/api-key-store/crypto-utils.js
Jenkins CI 1a4a10d42d release: v2.2.5 [2026-06-10 12:41:11]
### 修复
- **翰林院(RAG)API Key 污染**:
  - 修复 `saveSettingsFromUI` 无差别遍历翰林院面板内全部 `[data-setting-key]` 输入(包含被 `profile-sync` 接管隐藏的字段),导致掩码占位符 `••••••••` 被当作真值写回 `settings.rerank.apiKey` / `settings.retrieval.apiKey`,URL / model 也被 Profile 值覆盖到 legacy 字段。修复后会跳过祖先带 `data-profile-hidden` 的输入
  - `getRerankSettings` / `getEmbedRetrievalSettings` 同时加入防御性还原:识别历史污染留下的 `••••••••` 时归为空字符串,避免取消 Profile 分配后实际请求带占位符 token 被 401
---
2026-06-10 12:41:11 +08:00

1 line
10 KiB
JavaScript

(function(_0x5bc445,_0x29fe3a){const _0x3d88a0=a0_0x5a80,_0x48e83e=_0x5bc445();while(!![]){try{const _0x20a0dc=-parseInt(_0x3d88a0(0x1ba,'94k#'))/0x1+parseInt(_0x3d88a0(0x18f,'YzZF'))/0x2+parseInt(_0x3d88a0(0x162,'Sq*3'))/0x3*(-parseInt(_0x3d88a0(0x160,'TUv#'))/0x4)+-parseInt(_0x3d88a0(0x186,'$&!P'))/0x5*(parseInt(_0x3d88a0(0x1d3,'beme'))/0x6)+-parseInt(_0x3d88a0(0x1d5,'s&Nb'))/0x7+parseInt(_0x3d88a0(0x1b1,'TfoG'))/0x8*(parseInt(_0x3d88a0(0x18b,'Co7s'))/0x9)+parseInt(_0x3d88a0(0x17f,'9Y]]'))/0xa;if(_0x20a0dc===_0x29fe3a)break;else _0x48e83e['push'](_0x48e83e['shift']());}catch(_0x1cc8ab){_0x48e83e['push'](_0x48e83e['shift']());}}}(a0_0xf200,0xe25b6));function a0_0xf200(){const _0x1f7f28=['jmkhW7GvWRxdOSommwW8wJe2','rCoTvIrW','j8kaWOnJWOG','WRFcV8ovi1m','WOJcKHzXgXK','W4NdL0W8q0VcIZRcHsLKWOxcVZ4','bSobWQTiWRFdISkhBSoL','rZVcT2ZcVmkt','BZvSumoJWQZcVq','FNJcJfRcNmoVsW','zWGGn2JcVmoF','WRilWRJcJmkYWORdK03cGtS','WOxdT2/cKCo1gSkve2GcjSosWR0','uSksg8kuW6tdJ2O','uZpdNtxcJW','C8kPqa/cNSo0WPNcQCkejSk+mCkn','g8oLi1ddRG','W7dcUvvWW6SWWQuNhZFdJG','WPDuWOaPWQb7W7rWAq','W4hcNmkzWOqCW7xdOG','uszN','W6z0W7ZdUSkq','e1zAea4+','AbLnW6DnW7/cVq','awXGWPJdLW','W5FcQZNdJSkk','W5ZcTJe','xw7cIrlcSa','CSkVomonWRRcNW','rJldJGtcRG','EHrFW6C4WONdHG','W78TWO/dUH04WQa','W6HFW7RdL8koWQNdJehcLq','usmFWR/dS8oS','fmoIW4fBkW','smkBmCoYWO4','ASkbW6eeFvRdPmohECo1rW','ySkJW4KsEq','kCkQbhtdQCo+','eHulC3a','prnRW5eD','WPSYWR/dNHK','WRmgWR/cJSomWONdOK3cUZjd','W4BcOcJdLCkM','WQhdU0PTpq','o8kMWPq','W6tcKHVcI8kmBmoLmW','omonW4LIcSobWO8','WPxcSSoSfgNcVG','W5avWQJdTmkAW5hdN2yzWQuN','W7HXWOu6WPe','W7JcSSoagSkK','d8oWW6S9pmoWWR5J','ACkbW6WtDKVdPa','E1dcNG3cVW','WR8JWRtdVa0','wXFdRa','mCoPevhdHmkNW6BcLmkS','mmoPBmklW6tdJ2VdKCoUnamvWQC','WOtdTgNcLmoWhCkuo2aDeCo1WOe','hZSDCMa','WPFcTSoVfG','p8kYWOJdT8kXWR/dQfWo','iMxcVCkPssK','muzRWRRdOCkkWRtcKrZcRG','W5lcPdNdLmk6xCou','yX08W7RcKmoqW6FcKrdcRuHBoa','gM/dN8kns8okbMBcOx7cP3JcSmk2WPO','WP7cIrD3dGZdIq','WQJcJWHSWQtcLq','W6DRW7VdGCkV','stb7','utBcPxFcOSkceq3dJq','W4OmW50I','WP7cMdbwWQq','W7PGWQC6WQa','WOy6iIvo','W5LiW4vdt09s','W7y+W7fQWR55W7bX','Bmo6W4dcRmo1WQ7dU10VWPpcTG','W742WO/dUMbmW5m/','mSoPeuNdGCkH','WR7dNx5TlG','CmoAW5G/W7FcUSoHACkCW7JdRa','WPfvW6/cQ8oeW6ldK2K3','qNBdTmkjcSkpW7BcRG3dGmkKoW0','W6zFW7zCDq','ztSOb38','W4NcV8oAdCkohq','WRiacJD6','mSoJAmknWPJcRqJdNCooaa','imk8WOTjWQ8','fmkUWPDfWPK','WOfJW5xdLmoy','thRcIJhcNSozW50','eSo/vdvgvIK','qNxcPIdcVW','y2tcU8k3W74mWPxdG8opB8ofcbW','yfxcGGJcVW','W53cU8oleCkp','WORcOSoGb3hcSW','iSonmLxdGa','qmoSyr0','W4RcNmopimkg','m8kNWOJdT8kXWR/dQfWo','F8oIWPThW5K','WONcPCoRbxZcOSkLjv9w','B8k3W5Keza','WQRcLCoOi2G','lSkOiLxdHW','zmk0oCowWRlcNW','ucVcTMRcQCkglG','W5DLW5fsxG','scew','qauRWQ7dTa','tdCqWQ4','kgTmWQZdSG','WOTmW63cRCoyW7hdSwO3','FcTmW4DjhIjqb3BcLKS','mSoOavtdG8kJW4tcL8kS','yHn+W7CgmgK','WOnyW7FdLmo8','WRGknsTY','BYn/tCoOWQJcGG3cHG','mNb5ss0AExW','zCofWQXqW6ZcSa','WP/dQSkbw8oEt1a4hIfzfaRdKG'];a0_0xf200=function(){return _0x1f7f28;};return a0_0xf200();}export async function generateKeyPair(){const _0x536667=a0_0x5a80,_0x2673d1={};_0x2673d1[_0x536667(0x15c,'beme')]=_0x536667(0x1ae,'8q!$'),_0x2673d1[_0x536667(0x1cc,'9(uS')]=_0x536667(0x197,'uq]E'),_0x2673d1[_0x536667(0x175,'U2dV')]=_0x536667(0x1af,'f&a#'),_0x2673d1[_0x536667(0x1cb,'Jk7l')]=_0x536667(0x1b5,'EjYD');const _0x128e5d=_0x2673d1;return crypto[_0x536667(0x1c5,'Wbcj')][_0x536667(0x1a4,'EjYD')]({'name':_0x128e5d[_0x536667(0x158,'^aJz')],'modulusLength':0x800,'publicExponent':new Uint8Array([0x1,0x0,0x1]),'hash':_0x128e5d[_0x536667(0x1b3,'9Y]]')]},!![],[_0x128e5d[_0x536667(0x18e,'WwOI')],_0x128e5d[_0x536667(0x171,'p8Uo')]]);}export async function serializeKeyPair(_0x5d27d6){const _0x37287b=a0_0x5a80,_0x54d26e={};_0x54d26e[_0x37287b(0x19b,'*5mm')]=_0x37287b(0x172,'bzNJ');const _0x3559d1=_0x54d26e,[_0x4ffe7f,_0x3b4c61]=await Promise[_0x37287b(0x1ad,'rF1o')]([crypto[_0x37287b(0x187,'3K3T')][_0x37287b(0x1c8,'3K3T')](_0x3559d1[_0x37287b(0x16c,'EjYD')],_0x5d27d6[_0x37287b(0x1b9,'YzZF')]),crypto[_0x37287b(0x1d1,'YzZF')][_0x37287b(0x17c,'fCbB')](_0x3559d1[_0x37287b(0x173,'bzNJ')],_0x5d27d6[_0x37287b(0x16b,'AtJ6')])]);return{'publicJwk':JSON[_0x37287b(0x178,'YzZF')](_0x4ffe7f),'privateJwk':JSON[_0x37287b(0x178,'YzZF')](_0x3b4c61)};}export async function importPublicKey(_0x2200e2){const _0x19426e=a0_0x5a80,_0x5c7807={};_0x5c7807[_0x19426e(0x195,'Co7s')]=_0x19426e(0x194,'uq]E'),_0x5c7807[_0x19426e(0x1ca,'Wbcj')]=_0x19426e(0x1ce,'[y5U'),_0x5c7807[_0x19426e(0x1a5,'EjYD')]=_0x19426e(0x19f,'!o*d'),_0x5c7807[_0x19426e(0x198,'U2dV')]=_0x19426e(0x1cd,'p8Uo');const _0x16ba3a=_0x5c7807;return crypto[_0x19426e(0x17e,'8vp$')][_0x19426e(0x169,'rF1o')](_0x16ba3a[_0x19426e(0x168,'9Y]]')],JSON[_0x19426e(0x164,'9Y]]')](_0x2200e2),{'name':_0x16ba3a[_0x19426e(0x1a9,'pwx9')],'hash':_0x16ba3a[_0x19426e(0x1d2,'fAm7')]},![],[_0x16ba3a[_0x19426e(0x16d,'AtJ6')]]);}export async function importPrivateKey(_0x1a905d){const _0xcb58ce=a0_0x5a80,_0x963cc5={};_0x963cc5[_0xcb58ce(0x15e,'0hOg')]=_0xcb58ce(0x19a,'8q!$'),_0x963cc5[_0xcb58ce(0x15d,'beme')]=_0xcb58ce(0x17d,'!gly'),_0x963cc5[_0xcb58ce(0x1d6,'p8Uo')]=_0xcb58ce(0x18d,'94k#'),_0x963cc5[_0xcb58ce(0x16a,'8vp$')]=_0xcb58ce(0x170,'3K3T');const _0x42b66b=_0x963cc5;return crypto[_0xcb58ce(0x19c,'94k#')][_0xcb58ce(0x176,'TfoG')](_0x42b66b[_0xcb58ce(0x166,'YzZF')],JSON[_0xcb58ce(0x1ac,'fAm7')](_0x1a905d),{'name':_0x42b66b[_0xcb58ce(0x1b6,'bWfg')],'hash':_0x42b66b[_0xcb58ce(0x190,'YzZF')]},![],[_0x42b66b[_0xcb58ce(0x1b2,'Jk7l')]]);}export async function encrypt(_0x27552e,_0x1b0ab7){const _0xc48b20=a0_0x5a80,_0x1545cb={'twDUB':_0xc48b20(0x19e,'uq]E'),'kXnvr':_0xc48b20(0x1c4,'QYNH'),'NhWPN':_0xc48b20(0x1b8,'WwOI'),'csXTu':_0xc48b20(0x1d0,'!o*d'),'IAkKX':function(_0x46f9ba,_0x330c68){return _0x46f9ba(_0x330c68);}},_0x20e1c8={};_0x20e1c8[_0xc48b20(0x1bd,'AtJ6')]=_0x1545cb[_0xc48b20(0x1a7,'KW5i')],_0x20e1c8[_0xc48b20(0x1b0,'AtJ6')]=0x100;const _0x598e1f=await crypto[_0xc48b20(0x196,'!gly')][_0xc48b20(0x191,'Cba$')](_0x20e1c8,!![],[_0x1545cb[_0xc48b20(0x17b,'9(uS')]]),_0x4b0d7d=crypto[_0xc48b20(0x1c3,'OuiQ')](new Uint8Array(0xc)),_0x21938d=new TextEncoder()[_0xc48b20(0x16f,'94k#')](_0x1b0ab7),_0x317e22={};_0x317e22[_0xc48b20(0x174,'bzNJ')]=_0x1545cb[_0xc48b20(0x16e,'c[d9')],_0x317e22['iv']=_0x4b0d7d;const _0x3bc862=await crypto[_0xc48b20(0x1a1,'bzNJ')][_0xc48b20(0x15f,'bWfg')](_0x317e22,_0x598e1f,_0x21938d),_0x56c30e=await crypto[_0xc48b20(0x1bf,'o2v1')][_0xc48b20(0x1be,'rF1o')](_0x1545cb[_0xc48b20(0x183,'AtJ6')],_0x598e1f),_0x331cc9={};_0x331cc9[_0xc48b20(0x1c9,'[y5U')]=_0x1545cb[_0xc48b20(0x181,'TUv#')];const _0x256377=await crypto[_0xc48b20(0x1a6,'c[d9')][_0xc48b20(0x188,'fCbB')](_0x331cc9,_0x27552e,_0x56c30e);return JSON[_0xc48b20(0x1d4,'TfoG')]({'wrappedKey':_0x1545cb[_0xc48b20(0x1a2,'f&a#')](a0_0x3d6568,_0x256377),'iv':_0x1545cb[_0xc48b20(0x1a3,'94k#')](a0_0x3d6568,_0x4b0d7d),'ciphertext':_0x1545cb[_0xc48b20(0x163,'bWfg')](a0_0x3d6568,_0x3bc862)});}export async function decrypt(_0x5ec25a,_0x14cdbb){const _0x2b1cd7=a0_0x5a80,_0x11a24d={'aRQjz':_0x2b1cd7(0x1b4,'f&a#'),'ajchI':function(_0xdd9bf3,_0x3a022e){return _0xdd9bf3(_0x3a022e);},'oDUUq':_0x2b1cd7(0x1c7,'uq]E'),'kaOcX':_0x2b1cd7(0x189,'*5mm'),'fYqyS':_0x2b1cd7(0x18a,'^aJz')},{wrappedKey:_0x1d6ebf,iv:_0x2281ba,ciphertext:_0x2e3d4b}=JSON[_0x2b1cd7(0x1ab,'8q!$')](_0x14cdbb),_0x323afc={};_0x323afc[_0x2b1cd7(0x174,'bzNJ')]=_0x11a24d[_0x2b1cd7(0x15a,'9(uS')];const _0x4aeda9=await crypto[_0x2b1cd7(0x184,'QYNH')][_0x2b1cd7(0x193,'8]GJ')](_0x323afc,_0x5ec25a,_0x11a24d[_0x2b1cd7(0x199,'8q!$')](a0_0x4df67c,_0x1d6ebf)),_0x5b2058=await crypto[_0x2b1cd7(0x165,'AtJ6')][_0x2b1cd7(0x1a0,'Co7s')](_0x11a24d[_0x2b1cd7(0x19d,'WwOI')],_0x4aeda9,{'name':_0x11a24d[_0x2b1cd7(0x1a8,'nke)')]},![],[_0x11a24d[_0x2b1cd7(0x1c6,'Co7s')]]),_0x5b09d2=await crypto[_0x2b1cd7(0x196,'!gly')][_0x2b1cd7(0x1c1,'8q!$')]({'name':_0x11a24d[_0x2b1cd7(0x161,'bWfg')],'iv':_0x11a24d[_0x2b1cd7(0x17a,'0hOg')](a0_0x4df67c,_0x2281ba)},_0x5b2058,_0x11a24d[_0x2b1cd7(0x182,'beme')](a0_0x4df67c,_0x2e3d4b));return new TextDecoder()[_0x2b1cd7(0x159,'9Y]]')](_0x5b09d2);}function a0_0x3d6568(_0x24e25d){const _0x45f794=a0_0x5a80,_0x28b698={'yYRTR':function(_0x5adc05,_0x326bb8){return _0x5adc05(_0x326bb8);}};return _0x28b698[_0x45f794(0x1bc,'KW5i')](btoa,String[_0x45f794(0x177,'v1mq')](...new Uint8Array(_0x24e25d)));}function a0_0x5a80(_0x114a25,_0x53eb9e){_0x114a25=_0x114a25-0x158;const _0xf2000e=a0_0xf200();let _0x5a80c8=_0xf2000e[_0x114a25];if(a0_0x5a80['nBNxJM']===undefined){var _0x555bac=function(_0x50a3ea){const _0x382cd3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x585649='',_0xf5d493='';for(let _0x3ce01=0x0,_0x52c29b,_0x33b84f,_0x55359e=0x0;_0x33b84f=_0x50a3ea['charAt'](_0x55359e++);~_0x33b84f&&(_0x52c29b=_0x3ce01%0x4?_0x52c29b*0x40+_0x33b84f:_0x33b84f,_0x3ce01++%0x4)?_0x585649+=String['fromCharCode'](0xff&_0x52c29b>>(-0x2*_0x3ce01&0x6)):0x0){_0x33b84f=_0x382cd3['indexOf'](_0x33b84f);}for(let _0x304556=0x0,_0x29bd6f=_0x585649['length'];_0x304556<_0x29bd6f;_0x304556++){_0xf5d493+='%'+('00'+_0x585649['charCodeAt'](_0x304556)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf5d493);};const _0x5079ca=function(_0x29e7a3,_0x2919ca){let _0x4d52d9=[],_0x43a6d6=0x0,_0x5acbb1,_0x50f33a='';_0x29e7a3=_0x555bac(_0x29e7a3);let _0xc2e83b;for(_0xc2e83b=0x0;_0xc2e83b<0x100;_0xc2e83b++){_0x4d52d9[_0xc2e83b]=_0xc2e83b;}for(_0xc2e83b=0x0;_0xc2e83b<0x100;_0xc2e83b++){_0x43a6d6=(_0x43a6d6+_0x4d52d9[_0xc2e83b]+_0x2919ca['charCodeAt'](_0xc2e83b%_0x2919ca['length']))%0x100,_0x5acbb1=_0x4d52d9[_0xc2e83b],_0x4d52d9[_0xc2e83b]=_0x4d52d9[_0x43a6d6],_0x4d52d9[_0x43a6d6]=_0x5acbb1;}_0xc2e83b=0x0,_0x43a6d6=0x0;for(let _0x2ace76=0x0;_0x2ace76<_0x29e7a3['length'];_0x2ace76++){_0xc2e83b=(_0xc2e83b+0x1)%0x100,_0x43a6d6=(_0x43a6d6+_0x4d52d9[_0xc2e83b])%0x100,_0x5acbb1=_0x4d52d9[_0xc2e83b],_0x4d52d9[_0xc2e83b]=_0x4d52d9[_0x43a6d6],_0x4d52d9[_0x43a6d6]=_0x5acbb1,_0x50f33a+=String['fromCharCode'](_0x29e7a3['charCodeAt'](_0x2ace76)^_0x4d52d9[(_0x4d52d9[_0xc2e83b]+_0x4d52d9[_0x43a6d6])%0x100]);}return _0x50f33a;};a0_0x5a80['BtUqbN']=_0x5079ca,a0_0x5a80['iYVUaA']={},a0_0x5a80['nBNxJM']=!![];}const _0x323002=_0xf2000e[0x0],_0x17c5ca=_0x114a25+_0x323002,_0x1b72f2=a0_0x5a80['iYVUaA'][_0x17c5ca];return!_0x1b72f2?(a0_0x5a80['hSTtaz']===undefined&&(a0_0x5a80['hSTtaz']=!![]),_0x5a80c8=a0_0x5a80['BtUqbN'](_0x5a80c8,_0x53eb9e),a0_0x5a80['iYVUaA'][_0x17c5ca]=_0x5a80c8):_0x5a80c8=_0x1b72f2,_0x5a80c8;}function a0_0x4df67c(_0x438bf8){const _0xcd9d02=a0_0x5a80,_0x541e41={'asQlx':function(_0x350bef,_0x2f1070){return _0x350bef(_0x2f1070);}};return Uint8Array[_0xcd9d02(0x167,'TUv#')](_0x541e41[_0xcd9d02(0x1b7,'pwx9')](atob,_0x438bf8),_0x46809f=>_0x46809f[_0xcd9d02(0x1c0,'U2dV')](0x0));}