У меня возникла проблема с расшифровкой AES-256-CTR с использованием библиотеки response-native-aes-crypto. Расшифровка отлично работает на Android, но не работает на iOS с ошибкой [Ошибка: расшифровка не удалась].
Ниже приведен код расшифровки:
< pre class="lang-js Prettyprint-override">
Код: Выделить всё
import Aes from 'react-native-aes-crypto';
export async function decryptAES_256_CTR(content, key, iv) {
const hexIV = base64ToHex(iv);
const hexKey = base64ToHex(key);
// Log converted values
console.log('Cipher (Base64):', content);
console.log('Key (Hex):', hexKey);
console.log('IV (Hex):', hexIV);
// Decrypt using AES
return await Aes.decrypt(content, hexKey, hexIV, 'aes-256-ctr');
}
function base64ToHex(base64) {
const raw = Buffer.from(base64, 'base64').toString('binary');
let result = '';
for (let i = 0; i < raw.length; i++) {
const hex = raw.charCodeAt(i).toString(16);
result += hex.length === 2 ? hex : '0' + hex;
}
return result.toUpperCase();
}
- Расшифровка работает хорошо на Android, но не работает на iOS.< /li>
Исключение, созданное в iOS:
Код: Выделить всё
(NOBRIDGE) ERROR Error during decryption: [Error: Decrypt failed]
Вот записанные входные данные при возникновении ошибки:
Код: Выделить всё
Cipher (Base64): /j2YKMCrAsi00nN9lnshKwmIuHSHFteafgS0uWskhr0aw0152WPZPKKmNQthurxOO0rtHl8F84hlVg8YsqTAZ5enGKNk+XLKUi58c8H7rQO/Dedw8W3Pv6iHrZN/hLTBo1T4V8XP5sC+FP7NxHvTXrL8lfQ/dhWPYqZZ8hae12/Pwa1dNgL4B0hQaV0AdQySix9zRwCqrVUJXdoJizBcf3gvKl6+goMg5+KYLP+xJUSPCMiz01ocL2x2tipLxVo9FUjgnR2nj+OlTrZ99sWPTD8JkzRL77ge6G/wbCyzIU//JbR1Q+FfFCE+GcphMReH5dNiTR5g2XSeZo/GiVz+n+62xXMVySAs/0DJt4P62mnvE6LUkkAY/02wzvVb4jzuMP/R5KL2oZjuqPIfVvRrw/vp1Wj5/KwWKg6sBb0/z28StBn1qB5is/J61orO8yam2DowYFIZE+vZY3TCIlmoaFEviVW52yVWWGnWwa9AVxUYXUH4ZlbhBdGbO9+xrRhtx9RiU5cahMDOen/k2upiej7kBpXyPisPhPPQ1+K9no1D7/HBnawf+cs5UbOi28PmiS0h07nQd86dhKECFKOWzSaY1VNC0iAXRrG3BEzTzxgEjJmt/LCyl6YI+XpYX5BEXPq94hNYPgrhfVdK+uesnGsLT1XegIryzQzUWSoITpX9R8TwoO13HS0wv8Nu26Iuw3CJvbsGSEbG0glY4HRHwvwuSGIwvLo4Cc6QVCIqGhiSUITwMfd4KbCmLcO87qMc1fvyeeEE91A/3kNGY1AqubnJBqVu6eA2oxp3xdJ8HDKm8w1m0qF3sc/QZD/SnWPoaFBcAPV0mW0KG6XvyZpe9+CJUN4vPeoYs2iSYEkiy+n3L/yFo6tZIgvECQ856sjVjozTecEcyZhKPbpAfiKfWaub+VqcnoeAHLSpblnOGnaK7vtBGmzyfVw++Y0NrNhgSIO+IML+13puoxafVtb/aQ3t4+5Ey1n8Qw6ni9a/GJf0Ix7DK404mo7Bkb+YFJKeuOhb49QhMLzUGbeq5ieBAToiHH4Uz2j6Xrbmolp89Wa36EiVjAfkC15S9bEZWUm+H82cchfFwoHee/hmlzVfdzwDS6WQWyARxaBE048uESnFBAbA5PROobEXob73Q7rePWK4sCLY5P3Q/zTHQ0iF0xht7Bvlq7XnpjUqKjBL6cXqbW15gBDgvmIdZKUFCxfuWqaP4eRWVMwo++cq/P+ScIYELI0aHNJ7RfT9vWbElndQm1IgYQak56FiZ7ATp/MBii3xudE5UJ+wyNAvh58ye3DUoNT2SPfp+nA6JzTO7nAM6I3Kr79f3bIDfx2LP11xnYU4nyTE5LM0o7EpluG6sdIPcf4XpljKXxinJ5Dzb3P+kcyZm/ENmHnqyaH3pQT9
Key (Hex): 6B76F4CE1907991A845AB7523F8C1834E658CBF63A0214A589A2F4752BD19977
IV (Hex): 6333AFCC5354A014
- Используйте функцию decryptAES_256_CTR на Android и iOS.
- Передайте один и тот же зашифрованный текст, ключ и IV.
- Обратите внимание на ошибку на iOS.
< /ол>
Устранение неполадок выполнено - Проверена длина ключа (32 байта для AES-256) и длина IV (16 байтов) ).
- Проверил, что зашифрованный текст имеет формат Base64.
- Убедился, что библиотека правильно связана с помощью pod install. >
- Проверено с разными ключами и зашифрованными текстами.
- Известны ли какие-либо проблемы с расшифровкой AES-256-CTR с использованием реакции-native-aes-crypto на iOS?
- Может ли это быть связано с различиями в том, как библиотека обрабатывает расшифровка между платформами?
- Требуется ли особая конфигурация для AES-256-CTR в iOS?
Подробнее здесь: https://stackoverflow.com/questions/793 ... pto-on-ios