Мне интересно, видел ли кто-нибудь еще эту проблему?
С snmp4j
он работает в AES128
и DES
, но не AES192/256
или 3DES
.
Он работает с C# и другими API-интерфейсами Java с закрытыми источниками, поэтому это не настройка оборудования или проблема безопасности java, и да, он должен работать со всеми типами шифрования, и нет, это не проблема. -стандарт вроде PrivAES192With3DESKeyExtension
. Я использую jre1.8.0_211
и пробовал с 2.5.6
smnp4j и 2.8.3
snmp4j. Также пробовал с Jdk 11.0.7
с SNMP4j 3.4.0
. Разработчик snmp4j, похоже, не хотел помогать.
Это мой код:
public class SnmpV3Set
{
public static void main(String[] args) throws Exception
{
Address targetAddress = GenericAddress.parse("udp:192.168.121.45/161");
TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
Security.setProperty("crypto.policy", "unlimited");
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
snmp.getUSM().addUser(new UsmUser(new OctetString("password1"),AuthSHA.ID,new OctetString("password2"), PrivAES128.ID,new OctetString("password3")));
transport.listen();
// create the target
UserTarget target = new UserTarget();
target.setAddress(targetAddress);
target.setRetries(1);
target.setTimeout(5000);
target.setVersion(SnmpConstants.version3);
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
target.setSecurityName(new OctetString("password1"));
PDU pdu = DefaultPDUFactory.createPDU(SnmpConstants.version3);
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1.0")));
pdu.setType(PDU.GET);
ResponseEvent response = snmp.get(pdu, target);
PDU result = response.getResponse();
System.out.println("result " + result);
Address peerAddress = response.getPeerAddress();
snmp.close();
}
}