gpt4 book ai didi

ios - ios swift 上的 ECDH

转载 作者:行者123 更新时间:2023-11-28 08:14:25 26 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,我想实现 ECDH 以确保安全。我使用这个应用程序(https://github.com/DigitalLeaves/AsymmetricCrypto)生成一对 key (私钥和公钥),使用:

private let kAsymmetricCryptoManagerKeyType = kSecAttrKeyTypeEC
private let kAsymmetricCryptoManagerKeySize = 256
private let kAsymmetricCryptoManagerCypheredBufferSize = 128
private let kAsymmetricCryptoManagerSecPadding: SecPadding = .PKCS1

因此,我可以按如下方式获取私钥和​​公钥:

private key :3b3aef4e27c61e376bb1440f6a3077199d6d5ec665f6cd3595483a05ed96c498
public key X :3a405b5877d2939aea9dfb2995a89f4d63fca3c0cbb2a9d066fe67a08c499163
public key Y : 69bdbfc0ddea97ee03e85eb335db589cfcbee54b71f7fd74f6bc7344b5539ed6

这很完美。

现在,我想要的是执行 ECDH 以在我生成的私钥和我(从另一个平台)获得的公钥之间生成一个共享 key ,就像一个字符串:

X: b1a2166411655482ad39630a480768dde4ccce5af4c53edec82496f17f0ddbfd
Y: e6dd01508da28f4f2295d9fee86239f88e8c5cbc94dbbb1f814b27c85d0d971a

那么第一个问题就是如何将这最后两行字符串转化为SecKey来生成公钥。

第二个问题是如何在我生成的私钥(作为 SecKey)和我想在第一个问题中获得的新公钥之间执行 ECDH。

这是我用来生成 key 对的一些代码:

 func createSecureKeyPair(_ completion: ((_ success: Bool, _ error: AsymmetricCryptoException?) -> Void)? = nil) {
// private key parameters
let privateKeyParams: [String: AnyObject] = [
kSecAttrIsPermanent as String: true as AnyObject,
kSecAttrApplicationTag as String: kAsymmetricCryptoManagerApplicationTag as AnyObject
]

//public key parameters
let publicKeyParams: [String: AnyObject] = [
kSecAttrIsPermanent as String: true as AnyObject,
kSecAttrApplicationTag as String: kAsymmetricCryptoManagerApplicationTag as AnyObject
]

// global parameters for our key generation
let parameters: [String: AnyObject] = [
kSecAttrKeyType as String: kAsymmetricCryptoManagerKeyType,
kSecAttrKeySizeInBits as String: kAsymmetricCryptoManagerKeySize as AnyObject,
kSecPublicKeyAttrs as String: publicKeyParams as AnyObject,
kSecPrivateKeyAttrs as String: privateKeyParams as AnyObject,
]

// asynchronously generate the key pair and call the completion block
DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async { () -> Void in
var pubKey, privKey: SecKey?
let status = SecKeyGeneratePair(parameters as CFDictionary, &pubKey, &privKey)
print("pub :",pubKey)

我想在这个网站上有一个共享的 secret :http://www-cs-students.stanford.edu/~tjw/jsbn/ecdh.html带有 secp256r1 参数

提前致谢。

最佳答案

我从通过代码指定的 x 和 y 获得了您的 SecKey:

<SecKeyRef curve type: kSecECCurveSecp384r1, algorithm id: 3, key type: ECPublicKey, version: 4, block size: 384 bits, y: 7BA75DD35E74F1D6B6F1FE1FDB6F7977D7DE7BCEB6DFD7FCF1EF1CE5C6DCF7875B6DBD5FF35E1BDBB73CE5DD1DF7BD5A, x: 6F56B6D7AEB8D75EB9E78F3669DDFDEB7D1AE3CD3BEBC75D7B871C71EE5A7F8739DDE75E73CDB8F7A7F5EDFD1D75B7DD, addr: 0x7fda4a60d510>

可以关注我的文章

https://medium.com/@vaibhav.pmeshram/creating-and-dismantling-ec-key-in-swift-f5bde8cb633f

关于ios - ios swift 上的 ECDH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929802/

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