Подписываю текстовое сообщение на закрытом RSA ключе, потом перевожу эту подпись в Base64, потом обратно и проверяю её на открытом ключе. Почему что проверка показывает что подпись не действительна. Неужели Base64 как-то "ломает" текст подписи? Что я делаю не так?
Пример кода:
try {
Signature ecp2 = Signature.getInstance("SHA256withRSA");
ecp2.initSign((PrivateKey) readKey(login+"private"));
ecp2.update("123".getBytes());
byte[] tmps = ecp2.sign();
Log.d("TAG123", new String(tmps));
String s_b = Base64.encodeToString(tmps, Base64.DEFAULT);
//signature_open_key = ecp.sign().toString();
//String str = new String(tmps);
Signature ecp3 = Signature.getInstance("SHA256withRSA");
ecp3.initVerify((PublicKey ) readKey(login+"public" ));
String gg = new String(Base64.decode(s_b.getBytes(), Base64.DEFAULT));
Log.d("TAG123", "clear base64"+gg);
ecp3.update("123".getBytes());
byte[] tt = gg.getBytes();
Log.d("TAG123", "clear base64"+tt);
if(ecp3.verify(tt))
{
Log.d("TAG123", "signature test TRUE");
}
else
{
Log.d("TAG123", "signature test FALSE");
}
} catch (Exception e) {
e.printStackTrace();
}
Переводу в Base64 для того чтобы избавить от символов '
иначе в MySQL нельзя записать так как это спец символ.
Уважаемый DNS оказался прав. В итоге правильный вариант для потомков
try {
Signature ecp2 = Signature.getInstance("SHA256withRSA");
ecp2.initSign((PrivateKey) readKey(login+"private"));
ecp2.update("123".getBytes());
byte[] tmps = ecp2.sign();
Log.d("TAG123", new String(tmps));
byte[] s_b = Base64.encode(tmps, Base64.DEFAULT);
String buff = new String(s_b,"UTF-8");
Signature ecp3 = Signature.getInstance("SHA256withRSA");
ecp3.initVerify((PublicKey ) readKey(login+"public"));
byte[] gg = Base64.decode(buff.getBytes("UTF-8"), Base64.DEFAULT);
ecp3.update("123".getBytes());
if(ecp3.verify(gg))
{
Log.d("TAG123", "signature test TRUE");
}
else
{
Log.d("TAG123", "signature test FALSE");
}
} catch (Exception e) {
e.printStackTrace();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго времени суток Столкнулся с проблемой когда собрал JavaFX артефактВ появившемся окне в поле TextArea не выводится текст вопросов при том...