- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为 iOS MDM 开发网络应用程序。其中,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:没有安装的提供程序支持这个 key :sun.security.rsa.RSAPublicKeyImpl 在 javax.crypto.Cipher.a(DashoA13*..) 在 javax.crypto.Cipher.init(DashoA13*..) 在 javax.crypto.Cipher.init(DashoA13*..)
最佳答案
PKCS7.encrypt
生成在 CMS RFC 中指定的 EnvelopedData .这不仅仅是简单地加密内容,它是 涉及 加密的 ASN.1 数据结构的规范。
要在 Java 中生成或解密类似的东西,我建议使用 Bouncy CaSTLe 来完成这项工作,可以找到相关类的 Javadocs here - 特别注意CMSEnvelopedData和 friend 。
您在 Ruby 调用中传递的证书用于创建 RecipientInfo 结构,使用 CMSEnvelopedDataGenerator 可以实现类似的结果类。
关于ios - 将 Ruby 代码从苹果文档 (iPhoneOTAConfiguration) 转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10833113/
我正在为 iOS MDM 开发网络应用程序。其中,mobileconfig 中的有效负载在发送到设备之前将被加密。Apple 文档 givex 以下代码为例,它在 Ruby 中运行良好。但是,我无法在
我是一名优秀的程序员,十分优秀!