我正在为 iOS MDM 工作 Web 应用程序。在这种情况下,mobileconfig 中的有效负载将在发送到设备之前进行加密。Apple 文档 givex 以下代码为例,它在 Ruby 中并且工作正常。但是,我无法在 Java 中实现相同的功能。
OpenSSL::PKCS7.encrypt(p7sign.certificates,
payload, OpenSSL::Cipher::Cipher::new("des-ede3-cbc"),
OpenSSL::PKCS7::BINARY)
我使用的Java代码如下:
PublicKey publicKey = x509cert.getPublicKey();
//publinKey is key extracted from iOS device response stream
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
clearText = payloadContents.getBytes();
//payloadContents are contents to be encrypyted
cipherText = cipher.doFinal(clearText);
执行后的错误是
java.security.InvalidKeyException:没有安装的提供程序支持此密钥:javax.crypto.Cipher.a(DashoA13*..) 的 sun.security.rsa.RSAPublicKeyImpl javax.crypto.Cipher.init(DashoA13*..) .crypto.Cipher.init(DashoA13*..)