-2

エラーをスローするphp RSA Crypt Moduleで試した.NETでRSA xml署名公開鍵を使用して暗号化された文字列を復号化する必要があります。私はほとんど新しい Java です。サンプルコードは非常に役に立ちます。

実際には、次の.NetコードをJavaに移植する必要があります

RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider(keySize);
rsaCryptoServiceProvider.FromXmlString(privateKey);
int base64BlockSize = ((keySize / 8) % 3 != 0) ? (((keySize / 8) / 3) * 4) + 4 : ((keySize / 8) / 3) * 4;
int iterations = inputString.Length / base64BlockSize;
ArrayList arrayList = new ArrayList();
for (int i = 0; i < iterations; i++)
{                                                                               
   byte[] encryptedBytes = Convert.FromBase64String(inputString.Substring(base64BlockSize * i, base64BlockSize));
   Array.Reverse(encryptedBytes);
   arrayList.AddRange(rsaCryptoServiceProvider.Decrypt(encryptedBytes, false));
}                                                                                                   lstrResponse = Encoding.UTF8.GetString(arrayList.ToArray(Type.GetType("System.Byte")) as byte[]);
4

1 に答える 1

1

.Net XML キー表現を読み取り、指数とモジュラスを Java RSAPrivateKeySpecに格納する必要があります。このインスタンスをKeyFactorygeneratePrivateのメソッドに渡してキーを生成します。

次に、.Net 実装に適合するアルゴリズムを使用してメソッドによって取得されたCipherインスタンスが必要です。Cipher.getInstance暗号も適切に初期化する必要があります。取得したRSAPrivateKeyインスタンス (上記を参照) を使用して、ciphers メソッドの 1 つを呼び出してデータを復号化できます。

もちろん、悪魔は細部に宿ります: 鍵素材のデコードとフォーマット、正しいアルゴリズムの発見、初期化...

于 2012-07-26T16:54:18.990 に答える