У меня есть код, который работает правильно в Java, но когда я пытаюсь использовать его в Android, возникают проблемы.
Я пытаюсь зашифровать текстовое SMS-сообщение с помощью алгоритма Blowfish.
Проблема с этим кодом (на андроиде) заключается в том, что он не примет байт [] и не расшифрует сообщение.
ОТПРАВКА СМС
sMessage = "hello this is a message"
byte[] byteArray = EncryptBlowfish(sMessage);
//Convert the byte[] into a String which can be sent over SMS
StringBuffer strb = new StringBuffer();
for( int x = 0; x<byteArray.length; x++){
strb.append(byteArray[x]).append(",");
}//for loop
sMessage = strb.toString();
(sMessage затем отправляется с помощью SMS)
ПОЛУЧЕНИЕ SMS
//Convert the String back to a byte[] which can be decrypted
String[] strArray = sMessage.split(",");
byte[] byteArray = new byte[strArray.length];
int hold;
for (int x = 0; x < strArray.length; x++) {
hold = Integer.parseInt(strArray[x]);
byteArray[x] = (byte) hold;
}//for loop
sMessage = DecryptBlowfish(byteArray);
Метод шифрования
public static byte[] EncryptBlowfish(String msg){
byte[] encrypted =null;
try {
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, secretkey);
encrypted = cipher.doFinal(msg.getBytes());
} catch (){ //NoSuchAlgorithmException, NoSuchPaddingException..etc
}
return encrypted;
}
Метод расшифровки
public static String DecryptBlowfish(byte[] msg){
byte[] decrypted =null;
try {
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.DECRYPT_MODE, secretkey);
decrypted = cipher.doFinal(msg);
} catch (){ //NoSuchAlgorithmException, NoSuchPaddingException..etc
}
return decrypted;
}
Сообщение шифруется, создается байт [], затем я преобразовал байт [] встрока, вывод строки будет выглядеть примерно так ...
46,77,52,11, -108,91, -106,88, -81, -43,14,111, -118, -128, -92, -50,69, -44,100, -94,71,92, -49,116,
, этот вывод затем отправляется по SMS.Затем строка преобразуется обратно в байт [], но этот байтовый массив не расшифровывается.
Вопросы:
- Почему этот код работает в приложении Java, но не в Android?
- Есть ли способ заставить это работать в Android?
- Есть ли лучший способ преобразования байта [] в строку и обратно.
(Пожалуйста, прокомментируйте, если требуется дополнительная информация, спасибо)