如何在JAVA中为音频文件生成DSA签名密钥

如何在JAVA中为音频文件生成DSA签名密钥,java,dsa,Java,Dsa,我有一个音频文件(选择最容易使用的扩展名)。如何为DSA算法准备数据(此代码中的消息) String alg = "DSA"; KeyPairGenerator kg = KeyPairGenerator.getInstance(alg);//pobranie instancji algorytmu "DSA" rzuca wyjatek no such algorithm.. KeyPair keyPair = kg.genKeyPair(); //pobier

我有一个音频文件(选择最容易使用的扩展名)。如何为DSA算法准备数据(此代码中的消息)

String alg = "DSA";
        KeyPairGenerator kg = KeyPairGenerator.getInstance(alg);//pobranie instancji algorytmu "DSA" rzuca wyjatek no such algorithm..
        KeyPair keyPair = kg.genKeyPair(); //pobieramy pare kluczy prywatny i publiczny
        Signature sign = Signature.getInstance(alg); // generowany zostaje podpis implementujacy konkretny algorytm w tym wypadku DSA
        SignedObject so = new SignedObject(message, keyPair.getPrivate(), sign); // podpisywanie otrzymywanej wiadomosci -> message, zwracany jest podpisany obiekt     
        BufferedWriter bw = new BufferedWriter(new FileWriter("wynikDSA.txt")); // tworze nowy bufferred writer ktory umozliwa zapis do pliku
        verify(so,new Czytelnik(keyPair.getPublic()),sign,bw); // weryfikujemy czy klucz publiczny nowoutworzonego czytelnika pasuje do podpisu, przekazujemy bw aby moc zapisac dane do pliku
        bw.write("klucz prywatny " + keyPair.getPrivate()  //wpisywanie do pliku klucza prywatnego i publicznego
                + "\nklucz publiczny " + keyPair.getPublic());
        ShortCuts.addShortcutsIntoTheFile(bw, message); //dopisanie skortow MD5 i SHA-1 do pliku
        System.out.println(keyPair.getPrivate()); //wyspianie na konsoli klucza prywatnego na konsoli, ponizej  publicznego
        System.out.println(keyPair.getPublic());
        bw.close();

DSA不适用于大型消息加密。如果我是正确的,1024位的DSA应该不能加密大于128字节的消息。所以您的音频文件不能大于该值。@gigadot它对“fasbufbsafa”*10000“fasbufbsafa”*10000是“fasbufbsafa”重复10000次还是“fasbufbsafa”的值乘以10000没有问题?