ECC 關于加密解密的一些誤區(qū)

ECC (橢圓曲線算法)

使用的為iOS 平臺下使用 OpenSSL('OpenSSL-Universal', '1.0.1.17') 來實現(xiàn)的

加密

私鑰簽名,公鑰驗簽
簽名方法在 openssl庫 ecdsa.h

簽名
ECDSA_SIG * ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
                         EC_KEY *eckey);
驗簽
int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
                    const ECDSA_SIG *sig, EC_KEY *eckey);

公鑰加密,私鑰解密???
沒有看到有這一塊的實現(xiàn),
只看生成一個秘鑰,用其私鑰和自己的公鑰生成一個新的秘鑰,用其做AES
ecdh.h(橢圓曲線密鑰交換算法)

生成新的秘鑰
EC_KEY newKey = EC_KEY_new_by_curve_name(EC_GROUP_get_curve_name(EC_KEY_get0_group(myEcKey)));
EC_KEY_generate_key(newKey);

和myEcKey的publickey做 ecdh.h 的 compute
ECDH_compute_key( , , EC_KEY_get0_public_key(myEcKey), newKey ,  KEY_HASH_FUNCTION);
保存 newKey 的publicKey,其私鑰丟掉
Save( EC_KEY_get0_public_key(newKey));

獲得密鑰的時候調(diào)用:
EC_POINT epnt = EC_POINT_new(EC_KEY_get0_group(myEcKey));
EC_POINT_oct2point(egrp, epnt, @LoadSaveKey ));
ECDH_compute_key(,,epnt, myEcKey,  KEY_HASH_FUNCTION);

每次使用的時候,都生成一個新的秘鑰對,私鑰使用一次后丟掉,公鑰傳輸給Other,
Other 通過自己的私鑰和傳輸過來的公鑰可以計算出 AES 的秘鑰

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容