SNMP4j не работает с AES192, AES256 и 3DES - PullRequest
0 голосов
/ 06 мая 2020

Мне интересно, видел ли кто-нибудь еще эту проблему?

С 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();
   }
}
...