Java 签名无法使用SHA1 WITHDSA进行验证
我已经写了一个简单的符号代码。这个简单的签名代码不能验证。Java 签名无法使用SHA1 WITHDSA进行验证,java,weblogic,digital-signature,signature,Java,Weblogic,Digital Signature,Signature,我已经写了一个简单的符号代码。这个简单的签名代码不能验证。 dsa.verify(数字签名)返回false。 为什么验证失败? 应用服务器是weblogic 12.2.1.4.0 URL url = Thread.currentThread().getContextClassLoader().getResource("sueprv.gsdk"); InputStream is = url.openStream(); byte[] pk = new byte[335]; int rd = (is
dsa.verify(数字签名)
返回false。
为什么验证失败?
应用服务器是weblogic 12.2.1.4.0
URL url = Thread.currentThread().getContextClassLoader().getResource("sueprv.gsdk");
InputStream is = url.openStream();
byte[] pk = new byte[335];
int rd = (is.read(pk));
privateKey = createPrivateKey(pk);
signature.initSign(privateKey);
byte[] bytes = "this is a test".getBytes();
signature.update(bytes);
byte[] digitalSignature = signature.sign();
URL url1 = Thread.currentThread().getContextClassLoader().getResource("suepub.gsdk");
InputStream inputStream = url1.openStream();
pk = new byte[444];
rd = (inputStream.read(pk));
Signature dsa = Signature.getInstance("SHA1withDSA", "SUN");
dsa.initVerify(createPublicKey(pk));
dsa.update(bytes);
System.out.println(dsa.verify(digitalSignature));
经过多次调试,我从这部分代码中发现了问题:
rd = (inputStream.read(pk));
在代码中,我从inputStream读取了固定大小为444的公钥,但在调试中,我发现3个字节的公钥无法读取。因此,这就产生了问题,因此,该符号的验证失败。经过多次调试,我从这部分代码中发现了问题:
rd = (inputStream.read(pk));
在代码中,我从inputStream读取了固定大小为444的公钥,但在调试中,我发现3个字节的公钥无法读取。因此,这造成了麻烦,因此,该标志的验证失败