MD5 校验值:1fc9c7d9bea45dd359a8e0644d6972ec
GenericDhExchange.java 文件包含反编译后的源代码,请注意,该内容仅供学习和参考使用,不得用于非法用途。
package com.trilead.ssh2.crypto.dh; import com.trilead.ssh2.c.a; import com.trilead.ssh2.crypto.digest.HashForSSH2Types; import java.math.BigInteger; public abstract class GenericDhExchange { private static final a f3076b = a.a(GenericDhExchange.class); BigInteger f3077a; public static GenericDhExchange b(String str) { return str.startsWith("curve25519-sha256@libssh.org") ? new Curve25519Exchange() : str.startsWith("ecdh-sha2-") ? new EcDhExchange() : new DhExchange(); } public abstract void a(String str); public abstract void a(byte[] bArr); public abstract byte[] a(); public byte[] a(byte[] bArr, byte[] bArr2, byte[] bArr3, byte[] bArr4, byte[] bArr5) { HashForSSH2Types hashForSSH2Types = new HashForSSH2Types(c()); if (f3076b.a()) { f3076b.a(90, "Client: '" + new String(bArr, "ISO-8859-1") + "'"); f3076b.a(90, "Server: '" + new String(bArr2, "ISO-8859-1") + "'"); } hashForSSH2Types.b(bArr); hashForSSH2Types.b(bArr2); hashForSSH2Types.b(bArr3); hashForSSH2Types.b(bArr4); hashForSSH2Types.b(bArr5); hashForSSH2Types.b(a()); hashForSSH2Types.b(b()); hashForSSH2Types.a(this.f3077a); return hashForSSH2Types.c(); } protected abstract byte[] b(); public abstract String c(); public BigInteger d() { if (this.f3077a == null) { throw new IllegalStateException("Shared secret not yet known, need f first!"); } return this.f3077a; } }