RSA公開鍵暗号

🔥 Vibe プロンプト

「RSA 2048ビット鍵ペアを生成。公開鍵でファイルを暗号化、秘密鍵で復号。」

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding

private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()

with open('private.pem', 'wb') as f:
    f.write(private_key.private_bytes(encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption()))

ciphertext = public_key.encrypt(b"秘密のメッセージ", padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
plaintext = private_key.decrypt(ciphertext, padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))

デジタル署名

signature = private_key.sign(b"メッセージ", padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256())
try:
    public_key.verify(signature, b"メッセージ", padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256())
    print("✅ 署名検証成功!")
except:
    print("❌ 無効な署名!")

用途

  • セキュアメール (PGP)
  • SSL/TLS証明書
  • コード署名
  • SSH認証

章のまとめ

  • コアコンセプトと原理を理解
  • 実装方法とテクニックを習得
  • 一般的な問題と解決策に精通
  • 実際のプロジェクトに適用可能

さらに読む

  • 公式ドキュメントとAPIリファレンス
  • GitHubのオープンソース例
  • 技術書とオンラインコース
  • コミュニティディスカッションと技術ブログ

実装例

基本例

# 完全な実装例を提供します

手順

  1. セットアップ: 開発環境の設定
  2. データ: 必要なデータの準備
  3. 実装: コア機能の構築
  4. テスト: 動作確認
  5. 最適化: パフォーマンスの向上

よくあるエラー

| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |

コード例

import sys

def main():
    print("Hello, World!")

if __name__ == "__main__":
    main()

参考資料

  • 公式ドキュメント
  • APIリファレンス
  • オープンソース例
  • コミュニティディスカッション

会員限定無料チュートリアル

このチャプターは登録会員限定の無料コンテンツです!ログインまたは登録してすぐにロックを解除してください。

今すぐログイン / 登録