// 暗号化された文字列 パブリック 文字暗号化(文字列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
見てすることが重要です。