秘密の秘密鍵でライセンスコードに関するいくつかの値を暗号化してから、暗号化されたデータを表示し、それが私によってのみ作成されたことを確認するために公開鍵(アプリケーションに格納されている)で復号化されます。逆のRSAを使用してライセンスコードを復号化する:秘密鍵で暗号化し、公開鍵で復号する
トラブルは、あなたがパブリックキーで暗号化し、私が何をしたいの逆であるプライベート鍵と復号化と思われています。
SwiftyRSA
という名前のライブラリで公開鍵での暗号化しかサポートされていないことにも触れておきましょう。これはキーチェーンにkSecAttrKeyClassPublic
という名前で保存されているからだと思います。それはこれが期待していることであり、失敗する原因になります。
私は、キーは技術的に互換性がありますが、私のインスタンスでは動作させられないようです。これは公開鍵の指数が小さいためですか? ssh-keygen
を使用して公開鍵を秘密鍵と同じ長さにする方法はありますか?もしそうでなければ、私はどのように進むことができますか?
これは確かに可能です。あなたが作成しようとしているのはデジタル署名で、これはeveywhereで使われています。実際には認証局が証明書を発行するときに、秘密鍵を使用して証明書に関する情報を署名(暗号化)します。これにより、自分の公開鍵を知っていて信頼している場合は、証明書の検証が可能になります。 – Paulw11
暗号化機能 'SecKeyRawSign'を使用する必要があります - https://developer.apple.com/library/ios/documentation/Security/Reference/certifkeytrustservices/#//apple_ref/c/func/SecKeyRawSign暴露する。もう一つは、公開鍵で暗号化し、秘密鍵で復号化するだけです。公開鍵が秘密のままであれば、誰もライセンスコードを生成することはできません – Paulw11
@ Paulw11私が秘密鍵を配布して公開鍵秘密を保持すると、誰かが元々秘密鍵から公開鍵を再作成することはできません?そして、彼らはコードを生成するために公開鍵を持っています。 (私はSwiftyRSAの[README](https://github.com/TakeScoop/SwiftyRSA/blob/master/README.md)の指示に従って鍵ペアを作成しました)。また、公開鍵は秘密鍵よりも小さいので、セキュリティが賢明なのでしょうか?より大きな鍵を配布し、小さな鍵を秘密として保持するか? – Sencha