gpt4 book ai didi

ios - 将 Ruby 代码从苹果文档 (iPhoneOTAConfiguration) 转换为 Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:21 24 4
gpt4 key购买 nike

我正在为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com