支払うために - アルゴリズムの知識1 C#PKCS7暗号化と復号化C#とJavaの3DES暗号化モードECB / PKCS7

 

情報:C#PKCS7の暗号化と復号化

// 暗号化された文字列
    パブリック 文字暗号化(文字列TOE)
    { 
        // 暗号化と復号化に同じ鍵、記入するための特定を使用しなければならないが、32ビットでなければならない
        バイト [] = keyArray UTF8Encoding.UTF8.GetBytes(12345678123456781234567812345678 ); 
        RijndaelManaged RijndaelManaged = 新しい新しいRijndaelManaged(); 
        rijndaelManaged.Key = keyArray; 
        rijndaelManaged.Mode = CipherMode.ECB; 
        rijndaelManaged.Padding = PaddingMode.PKCS7; 
        のICryptoTransform ICryptoTransform =rijndaelManaged.CreateEncryptor(); 

        バイト [] = toEncryptArray UTF8Encoding.UTF8.GetBytes(TOE);
         バイト [] = resultArray icryptoTransform.TransformFinalBlock(toEncryptArray、0 、toEncryptArray.Length); 

        戻り Convert.ToBase64String(resultArray、0 、resultArray.Length ); 
    } 

    // 暗号解読ストリング
    パブリック 復号(TOD)
    { 
        // 暗号化と復号化は、同じキーを使用する独自の特定値を満たすが、32ビットでなければならなければならない
        バイト [] = keyArray UTF8Encoding.UTF8.GetBytes(" 12345678123456781234567812345678 " );
        RijndaelManaged rijndaelManaged= 新しいRijndaelManaged()。
        rijndaelManaged.Key = keyArray。
        rijndaelManaged.Mode = CipherMode.ECB。
        rijndaelManaged.Padding = PaddingMode.PKCS7。
        ICryptoTransform cTransform = rijndaelManaged.CreateDecryptor()。

        バイト [] toEncryptArray = Convert.FromBase64String(TOD)。
        バイト [] resultArray = cTransform.TransformFinalBlock(toEncryptArray、0 、toEncryptArray.Length)。

        リターンUTF8Encoding.UTF8.GetString(resultArray)。
    }

 

-------------------------------------------------- -----------------

参考:C#とJava 3DES暗号化モードECB / PKCS7

また、我々は、データと一致していない見て、慎重に検討する必要があります

 

 参考文献:どのようにC#の内部でJava PKCS7の暗号化機能で実現するには?

プロフィールの住所ます。https://bbs.csdn.net/topics/340147880

A

///  <要約> 
        /// 署名作成する
         ///  </要約> 
        ///  ます。<param name = "データ"> タグデータ</ param>の
        ///  <戻り値> </戻り値> 
        プライベート の静的の バイトを [] CreateSign(バイト[]データ)
        { 
            IF(データ== NULL スロー 新しい新しい例外ArgumentNullExceptionザ(" データが空でない" ); 

            X509Certificate2としてuserCert = CreateCertificate(ConfigInfo.certFileName、ConfigInfo.Password);
             IF(AS userCert == NULLスロー 新しい新しい例外ArgumentNullExceptionザ・(証明書は空にすることはできません); 

            ContentInfo内容 = 新新 ContentInfo(データ); // 署名するデータを設定し 
            SignedCms SignedCms = 新新SignedCms(コンテンツ); 
            CmsSigner署名者 = 新新()userCertとしてCmsSigner;
             試み
            { 
                SignedCms .ComputeSignature(署名者); // 署名作成
                戻りsignedCms.Encode(); 
            } 
            キャッチ(CryptographicException EX)
            { 
                スロー元; 
            } 

        }

二つ

///  <要約> 
        /// 创建证书
         ///  </要約> 
        ///  ます。<param name = "FILENAME"> 文件名称</ param>の
        ///  <PARAM NAME = "パスワード"> 密码</ PARAM > 
        ///  <戻る> </戻り> 
        パブリック 静的 X509Certificate2 CreateCertificate(文字列ファイル名、文字列パスワード)
        { 
            場合ストリング .IsNullOrEmpty(filename)で|| ストリング.IsNullOrEmpty(パスワード))
            { 
                戻り ヌル
            } 
            試み
            { 
                リターン 新しいX509Certificate2(ファイル名、パスワード、X509KeyStorageFlags.Exportable)。
            } 
            キャッチ(CryptographicException EX)
            { 
                スローEX。
            } 
        }

三つ

///  <要約> 
        /// 校验签名
         ///  </要約> 
        ///  <PARAM NAME = "署名"> 标签数据</ PARAM> 
        ///  <PARAM NAME = "証明書"> 证书</ PARAM> 
        ///  <戻る> </戻り> 
        パブリック 静的 BOOL確認(バイト []署名、バイト[]データ)
        { 
            ContentInfo contentInfo = 新しいContentInfo(データ)。
            SignedCms verifyCms = 新しい SignedCms(contentInfo、真の);
            試します 
            {
                verifyCms.Decode(署名)。
                verifyCms.CheckSignature(真の);
                返す ; 
            } 
            キャッチ(CryptographicException EX)
            { 
                ServiceHub.AddLog(RuntimeLogType.Exception、ヌル" 签名解码失败:" + ex.Message、ex.StackTrace)。
                スローEXを。
            } 
        }

 

--------------------------------------------------

参考:Javaメソッドのシグネチャは、C#言語に対応した大きな神の助け書き込みを求めて

プロフィールの住所ます。https://bbs.csdn.net/topics/392437375

 

参考:RSA暗号化と復号化、JavaとC#の相互運用性

プロフィールの住所ます。https://blog.csdn.net/thc1987/article/details/81383365

見てすることが重要です。

 

おすすめ

転載: www.cnblogs.com/Tpf386/p/11959653.html