JspからASP.netへの値引継ぎ
- 題名: JspからASP.netへの値引継ぎ
- 著者: タイケン
- 日時: 2009/12/01 11:22:06
- ID: 25933
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: JspからASP.netへの値引継ぎ
- 著者: Hongliang
- 日時: 2009/12/01 17:30:50
- ID: 25934
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: JspからASP.netへの値引継ぎ
- 著者: タイケン
- 日時: 2009/12/02 12:55:51
- ID: 25940
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: JspからASP.netへの値引継ぎ
- 著者: タイケン
- 日時: 2009/12/02 15:57:34
- ID: 25944
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[ASP.NET]
環境/言語:[Tomcat, java1.5,ASP.net]
分類:[ASP.NET]
初めての ASP.NETの開発で参考にさせて頂いております。
現在Jsp側でDB検索を行い取得したデータを暗号化したdatファイルで
出力しASP.net側で復号化を行う処理を行おうとしているのですが、
データが正しくありません。というエラーが発生し出力したファイルの
内容も復号化できていない状態です。
Jspで暗号化したものをASP.net側で復号化することはできないのでしょうか?
宜しくお願い致します。
実際のソースものせておきます。
【JSP側】
String key = "abcd1234";
Cipher ctes = Cipher.getInstance("DES");
SecretKeyFactory keyFac = SecretKeyFactory.getInstance("DES");
DESKeySpec keySpec = new DESKeySpec(key.getBytes());
SecretKey secKey = keyFac.generateSecret(keySpec);
ctes.init(Cipher.ENCRYPT_MODE,secKey);
OutputStream xmle = new CipherOutputStream(new FileOutputStream(filePath),ctes);
Writer fw = new OutputStreamWriter(xmle);
fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
fw.write("<venture>\n");
fw.write("<company>\n");
fw.write("<name>XXX1株式会社</name>\n");
fw.write("</company>\n");
fw.write("<company>\n");
fw.write("<name>XXX2株式会社</name>\n");
fw.write("</company>\n");
fw.write("<company>\n");
fw.write("<name>XXX3株式会社</name>\n");
fw.write("</company>\n");
fw.write("<company>\n");
fw.write("<name>XXX4株式会社</name>\n");
fw.write("</company>\n");
fw.write("<company>\n");
fw.write("<name>" + filePath + "</name>\n");
fw.write("</company>\n");
fw.write("</venture>\n");
fw.close();
response.sendRedirect("http://localhost:52605/Login.aspx?
filepath=" + filePath);
【ASP.net側】
Dim filePath As String = Request.QueryString("filepath").ToString
filePath = filePath.Substring(2)
Dim xmlFilePath As String = "C:\Program Files\Apache Software
Foundation\Tomcat 5.5\" & filePath
DecryptFile(xmlFilePath, "abcd1234")
Public Shared Sub DecryptFile(ByVal fileName As String, _
ByVal key As String)
'DESCryptoServiceProviderオブジェクトの作成
Dim des As New System.Security.Cryptography.DESCryptoServiceProvider
'共有キーと初期化ベクタを決定
'パスワードをバイト配列にする
Dim bytesKey As Byte() = System.Text.Encoding.UTF8.GetBytes(key)
'共有キーと初期化ベクタを設定
des.Key = ResizeBytesArray(bytesKey, des.Key.Length)
des.IV = ResizeBytesArray(bytesKey, des.IV.Length)
'暗号化されたファイルを読み込むためのFileStream
Dim fsIn As New System.IO.FileStream(fileName, _
System.IO.FileMode.Open, System.IO.FileAccess.Read)
'DES復号化オブジェクトの作成
Dim desdecrypt As System.Security.Cryptography.ICryptoTransform = _
des.CreateDecryptor()
'読み込むためのCryptoStreamの作成
Dim cryptStreem As New System.Security.Cryptography.CryptoStream( _
fsIn, desdecrypt, _
System.Security.Cryptography.CryptoStreamMode.Read)
'復号化されたファイルの保存先
Dim outFileName As String
Dim strExt As String = ""
If fileName.ToLower().EndsWith(".dat") Then
strExt = System.IO.Path.GetExtension(fileName)
outFileName = "sampleFile.xml"
Else
strExt = System.IO.Path.GetExtension(fileName)
outFileName = fileName.Replace(strExt, String.Empty) + ".err"
End If '復号化されたファイルを書き出すためのFileStream
Dim fsOut As New System.IO.FileStream(outFileName, _
System.IO.FileMode.Create, System.IO.FileAccess.Write)
'復号化されたデータを書き出す
Dim bs(255) As Byte
Dim readLen As Integer
Try
Do
readLen = cryptStreem.Read(bs, 0, bs.Length)
If readLen > 0 Then
fsOut.Write(bs, 0, readLen)
End If
Loop While (readLen > 0)
Catch
Finally
'閉じる
cryptStreem.Close()
fsIn.Close()
fsOut.Close()
End Try
End Sub