C#、Golang、Python、Java(Android)間のDes、Rsa加復号互通シリーズの前言


前言
最近のプロジェクトは1つのインタフェースを書く必要があり、2つのパラメータを返す必要があります.1つのパラメータはRsa非対称暗号化を使用し、対称暗号化用の鍵を復号し、もう1つのパラメータはDesを使用して対称暗号化を行います.機能は難しくありませんが、多言語間で対称、非対称暗号化の相互接続を実現するには、確かに力がかかり、記録すべきだと思います.注意:相互接続、すなわち言語Aが暗号化されてBase 64形式の暗号文が生成されると、言語Bで復号されます.
  • C#、Golang、Python、Java(Android)間のDes、Rsa加復号互通シリーズの前言
  • C#、Golang、Python、Java(Android)間のDes、Rsa加復号互通シリーズのC#
  • C#、Golang、Python、Java(Android)間Des、Rsa加復号互通シリーズのGolang
  • C#、Golang、Python、Java(Android)間のDes、Rsa加復号互通シリーズのPython
  • C#、Golang、Python、Java(Android)間Des、Rsaプラス復号相互接続シリーズのJava(Android)
  • 対称暗号化Des
    Des対称暗号化を実現するには、多言語の相互接続には以下の点に注意する必要があります.
  • 文字符号化統一UTF-8
  • 使用
  • 暗号モードはCBC
  • を統一的に使用する.
  • 充填方式統一使用PKCS 5 Padding
  • 非対称暗号化Rsa
    Rsa非対称暗号化を実現するには、多言語の相互接続には以下の点に注意する必要があります.
  • 文字符号化統一UTF-8
  • 使用
  • 秘密鍵フォーマットPkcs 1およびPkcs 8に注意し、必要に応じて
  • を選択する.
  • 充填方式はRSA/ECB/PCCS 1 Padding
  • に統一する.
    このシリーズでは、各言語のツールクラスごとに鍵ペアを生成することができますが、ここではOpenSSLを使用して鍵ペアを生成する方法を記録し、各言語でOpenSSL生成鍵ペアを使用して暗号化、復号化、署名、チェックを行うことができます.
  • ダウンロード、
  • インストール
    http://slproweb.com/products/Win32OpenSSL.html
    
  • 秘密鍵(pkcs 1)(従来の秘密鍵フォーマット)
  • を生成する.
    openssl genrsa -out private_key.pem 1024
    
  • 公開鍵
  • を生成する.
    openssl rsa -in private_key.pem -pubout -out public_key.pem
    
  • pkcs 1形式の秘密鍵をpkcs 8形式、すなわちJava利用可能な秘密鍵
  • に変換する.
    //create pkcs8_private_key.pem For Java
    openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
    
  • pkcs 8フォーマットの秘密鍵をpkcs 1フォーマット(このステップは必要ない)
  • に変換する.
    openssl rsa -in pkcs8_private_key.pem -out pkcs1_private_key.pem
    
  • 既存の秘密鍵に基づいてrsaCertReq.csrを生成する.このファイルは証明書を生成し、国などの情報を提示するために使用され、空にして、直接車に戻って
  • を終了することができる.
    openssl req -new -key private_key.pem -out rsaCertReq.csr
    
  • 前のステップに従ってrsaCertReq.csrと秘密鍵を生成し、証明書を生成し、有効期間は10年
  • である.
    openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
    
  • IOSに必要な公開鍵
  • を生成する.
    openssl x509 -outform der -in rsaCert.crt -out public_key.der
    
  • IOSに必要な秘密鍵を生成する過程で、パスワードを入力する必要があり、必ずパスワードを覚えて、後に
  • を使う.
    openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
    

    シリーズに含まれるすべてのエンジニアリングソース
    C#エンジニアリングソースhttps://github.com/lhtzbj12/csharp_encryption Golangエンジニアリングソースhttps://github.com/lhtzbj12/go_encryption