- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 ECPublicKey 转换为 PEM 格式,如下所示
"-----BEGIN PUBLICKEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo0WcFrFClvBE8iZ1Gdlj+mTgZoJWMNE3kDKTfRny2iaguwuSYxo+jCnXqzkR+kyFK9CR3D+pypD1sGb1BnfWAA==-----ENDPUBLIC KEY-----"
<SecKeyRef curve type: kSecECCurveSecp256r1, algorithm id: 3, keytype: ECPublicKey, version: 4, block size: 256 bits, y:B6EEBB3791933312E10BD7C3D65C950AB7E1C325BCDB57A8663EB7B1E29BFA77, x:1D41FDAD2137316D415B117227BCC465566E56A54E7B2B9B3A4B66C15A067611,addr: 0x7f818850f6d0>
var error:Unmanaged<CFError>?
guard let cfdata = SecKeyCopyExternalRepresentation(publicKey, &error)
else { return }
let data:Data = cfdata as Data
let b64String = data.base64EncodedString()
感谢此处的任何帮助
最佳答案
首先转换为 ASN.1 格式:(请参阅 ASN.1 Decoder 中的解码示例)
let publicKeyData: CFData = ...
let ecHeader: [UInt8] = [
/* sequence */ 0x30, 0x59,
/* |-> sequence */ 0x30, 0x13,
/* |---> ecPublicKey */ 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, // (ANSI X9.62 public key type)
/* |---> prime256v1 */ 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, // (ANSI X9.62 named elliptic curve)
/* |-> bit headers */ 0x07, 0x03, 0x42, 0x00
]
var asn1 = Data()
asn1.append(Data(ecHeader))
asn1.append(publicKeyData as Data)
然后进行 Base64 编码并添加 PEM 页眉和页脚:
let encoded = asn1.base64EncodedString(options: .lineLength64Characters)
let pemString = "-----BEGIN PUBLIC KEY-----\r\n\(encoded)\r\n-----END PUBLIC KEY-----\r\n"
关于ios - 快速将 ECPublicKey(SecKey) 转换为 PEM 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69258967/
我有一个普通的字符串,我使用 Java util 中的 Base64 类对其进行编码,并将其传递到 ECPublicKey 构造函数中,但它不起作用。我们是否必须以其他格式进行编码才能将其传递到 EC
我得到一个 64 位未压缩的公钥,需要运行 ECDH 来生成共享 key 。为了调用 ECDH,我需要将字节数组转换为 PublicKey 并且我使用的是我在本论坛中找到的以下代码: public s
我知道曲线名称 ( secp256k1 ) 和 X和 Y EC 公钥的坐标。 如何制作 org.bouncycastle.jce.interfaces.ECPublicKey在他们之外? 我读过 ht
目前我正在更新我的 x.509 证书库以支持 ECC。大多数已实现的构建器都采用 publicKey 并从 key 中导出算法等。在 RSA 中,这很简单,您检查 key 的算法并可以验证位长度。然而
我正在尝试在给定私钥和已知曲线的情况下生成公钥。下面是我的代码: // Generate Keys ECGenParameterSpec ecGenSpec = new ECGenParameterS
我对 ECDH(椭圆曲线 Diffie-Hellman)加密有一个小问题。我使用 BouncyCaSTLe 库。 这是我生成 key 的函数: public static KeyPair genera
我正在尝试使用 pointy caSTLe 通过 secp256k1 曲线生成公钥和私钥对。我想我已经成功创建了一个由 ECPrivateKey 和 ECPublicKey 组成的 Asymmetri
我想将 ECPublicKey 转换为 PEM 格式,如下所示 "-----BEGIN PUBLICKEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo0WcFr
这个问题与我昨天问的问题相关:Recovering an ECPublicKey from JavaCard to Java 我有同样的问题,但方式相反:将公钥从我的卡发送到我的计算机后(该点按照 A
在andorid xamarin项目中,我正在使用EC曲线生成 key 对 generator = KeyPairGenerator.GetInstance(KeyProperties.KeyAlgo
我需要通过 ECDSA secp256k1 曲线验证远程生成的签名。我得到 64 个字节,代表 r 和 s 的原始字节。以及 ANSI X9.62 编码的公钥 ([0x04, X (32 bytes)
我正在尝试在终端(由我的计算机模拟)和智能卡(Java 卡)之间实现 ECDH。 我修复了我想使用的椭圆曲线,在卡端我有以下代码来运行协议(protocol)的第一部分: ECPubl
希望在这里得到一些帮助... 我试图从未压缩的客户端公钥(0x04 |32字节点X|32字节点Y)和服务器私钥(openSSL生成base64)生成共享 key ,但在将服务器EC私钥转换为EC时出现
在 Java 中,我有一个以字节数组形式发送的 ECDH 公钥。 收到字节数组后,我该如何将其转回公钥? 我正在使用 Bouncy CaSTLe,但 Java 解决方案同样有用。 谢谢 最佳答案 当您
我有一个用于椭圆曲线的自定义加密引擎,我正在尝试使其与 Java 的 bouncy caSTLe 加密兼容,因此我正在针对 Java 的 bouncycaSTLe 测试我的 API( key 对生成)
我是一名优秀的程序员,十分优秀!