Доброго времени суток. Ребята, пишу диплом, одна из составных - проверка электронно-цифровой подписи. Когда создаю подпись и сразу ее проверяю, все нормально работает
| Код | String sData = "This is some text"; byte[] data = sData.getBytes(); KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); kpg.initialize(1024); KeyPair keyPair = kpg.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); Signature dsa = Signature.getInstance("DSA"); dsa.initSign(privateKey); dsa.update(data); byte[] sig = dsa.sign(); dsa.initVerify(publicKey); dsa.update(data); boolean verifies = dsa.verify(sig); System.out.println("signature verifies: " + verifies);
|
Тут все норм работает, выдает 'true'. Но при попытке записи ЭЦП(электронной подписи) в файл и считывание ее от туда, выдает 'false'. Вот код
| Код | KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); kpg.initialize(1024); KeyPair keyPair = kpg.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); Signature dsa = Signature.getInstance("DSA"); dsa.initSign(privateKey); FileInputStream fRead = new FileInputStream(new File("D:\\test\\plainText.txt")); byte[] buffer = new byte[8192]; int lenght; while((lenght = fRead.read(buffer)) != -1) { dsa.update(buffer, 0, lenght); } byte[] sig = dsa.sign(); fRead.close(); File file1 = new File("D:\\test(OnlySignature).txt"); FileOutputStream fOut = new FileOutputStream(file1); fOut.write(sig); fOut.close(); FileInputStream fIn = new FileInputStream(file1); byte[] data = new byte[fIn.available()]; fIn.read(data); fIn.close(); dsa.initVerify(publicKey); dsa.update(data); boolean verifies = dsa.verify(sig); System.out.println("signature verifies: " + verifies);
|
В чем проблема, ума не приложу.... Подскажите пожалуйста кто знает
|