我从这里举了一个例子: bouncycastle_example
这是第二个答案,而不是被接受的答案!
并且它在Java 8和Java 11中都可以正常工作,尽管maven Central并不支持后者。
现在我自己的项目复制了与示例相同的行,并给出了标题中指出的错误消息。
有一个正在运行的示例,我想知道为什么完全相同的代码在我的项目中不起作用...
//Klassenattribute (transient):
//transient BigInteger message;
transient byte[] message;
transient SHA3.DigestSHA3 digestSHA3 = new SHA3.Digest512();
//Konstruktor:
public Signature_Path (byte[] message) {//Done: BigInteger message
//Klassenattribute initialisieren:
path= new Vector<Node>();
//Klassenattribute initialisieren (GEHEIM):
sk = new Secret_Key ();
std_rnd = new Random (); //Zufallszahlgenerator
//Klassenattribute initialisieren (privat):
k = 0;//Bitlaenge der Zufallszahlen p, q
//Klassenattribute initialisieren (transient):
byte[] digest = digestSHA3.digest(message.getBytes());
this.message = digest;
}
我希望使用弹性城堡方法digest
计算变量digestSHA3.digest
。
我得到了一个编译器标记,后者不可用。
UPDATE_20190212:使用java8和java11进行编译,并得到了完全相同的错误消息。
这来自我的pom.xml:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.60</version>
</dependency>
答案 0 :(得分:1)
尽管编译器标记不在括号内,但令人讨厌的表达式不是digestSHA3.digest
,而是message.getBytes()
。 message
已经是byte[]
,因此删除.getBytes()
就可以解决问题。