• ベストアンサー

Perlを勉強中の初心者です。

Perlを勉強中の初心者です。 どうしても解らない事があるので誰かお助け下さい! 現在フォームに入力した内容を一部暗号化してcsvファイルに保存し、 後で参照したり変更出来るようにする簡単なWebアプリを試験的に作っています。 暗号化の際に、暗号化した文章に改行コードが入ってしまい、参照時におかしな内容が表示される(入るべき所に入るべき内容がなく、まったく違う枠に表示。もしくは表示されない)という現象に悩まされています。改行コードを置き換えたり出来ないかと、試行錯誤してみたんですが上手くいかず、ぐぐっても参考になるコンテンツに出会えません。 改行が入らない簡単な暗号化の方法など、 なんとかこの状況を打破する良い知恵を教えて頂けませんか? 皆さん、よろしくお願いします! ※ 暗号化にはRC4を使っていますが、他の手法でも構いません。  ただし再度表示させる必要があるので、複合化出来るものでお願い致しますm(_ _)m  

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

RC4の計算によって元データが改変されてしまうということはありませんので、暗号化方式ではなく別の箇所でミスをなさっているのではないかと思います。プログラムのコードをそのまま質問文にコピペすると返答をもらいやすいですよ。的外れかもしれませんが何が起こっているのか推測しておきますね: (1) CSVにRC4の出力を「そのまま」保存している。 RC4の出力はバイナリになりますので、もし暗号化した結果をCSVの1カラムに保存するという仕様なのでしたら、RC4の出力をCSV的に無害な形式に変換してから保存してやる必要があります。たとえばMIME::Base64などを使うのが手軽でいいでしょう。 (2) 文字コードの処理に問題がある。 RC4はバイト列に対して定義されている暗号化処理ですので、たとえばPerlのUnicode文字列を何も考えずに暗号処理するとおかしなことが起きるかもしれません。これが原因の場合、Unicode文字列をお好みの文字コードのバイト列に変換してからRC4を適用しなければなりません。 たぶん(1)じゃないかと思いますが…

sickboy555
質問者

お礼

ご回答有り難うございます! まだ試してはいませんが、1)だと思います…ハイ。 暗号化したものをそのまま出力してます…。 そんな基礎的な事だから検索しても出てこないんだ(- -; そして、RC4ってバイナリなんですね…。 まずは試して結果を報告致します。 ひとまず有り難うございました♪

sickboy555
質問者

補足

1)を試したら上手くいきました! スゴく助かりました、ありがとうございます。 そしてレベルが低くて気が引けますが 今後はコードを晒すようにします。

関連するQ&A